about summary refs log tree commit diff
path: root/db
diff options
context:
space:
mode:
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20170301222600_create_mutes.rb12
-rw-r--r--db/migrate/20170303212857_add_last_emailed_at_to_users.rb5
-rw-r--r--db/migrate/20170304202101_add_type_to_media_attachments.rb12
-rw-r--r--db/migrate/20170317193015_add_search_index_to_accounts.rb9
-rw-r--r--db/migrate/20170318214217_add_header_remote_url_to_accounts.rb5
-rw-r--r--db/migrate/20170322021028_add_lowercase_index_to_accounts.rb9
-rw-r--r--db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb15
-rw-r--r--db/migrate/20170322162804_add_search_index_to_tags.rb9
-rw-r--r--db/migrate/20170330021336_add_counter_caches.rb13
-rw-r--r--db/migrate/20170330163835_create_imports.rb11
-rw-r--r--db/migrate/20170330164118_add_attachment_data_to_imports.rb11
-rw-r--r--db/schema.rb53
12 files changed, 153 insertions, 11 deletions
diff --git a/db/migrate/20170301222600_create_mutes.rb b/db/migrate/20170301222600_create_mutes.rb
new file mode 100644
index 000000000..8f1bb22f5
--- /dev/null
+++ b/db/migrate/20170301222600_create_mutes.rb
@@ -0,0 +1,12 @@
+class CreateMutes < ActiveRecord::Migration[5.0]
+  def change
+    create_table :mutes do |t|
+      t.integer :account_id, null: false
+      t.integer :target_account_id, null: false
+      t.timestamps null: false
+    end
+
+    add_index :mutes, [:account_id, :target_account_id], unique: true
+
+  end
+end
diff --git a/db/migrate/20170303212857_add_last_emailed_at_to_users.rb b/db/migrate/20170303212857_add_last_emailed_at_to_users.rb
new file mode 100644
index 000000000..9ae3da4fb
--- /dev/null
+++ b/db/migrate/20170303212857_add_last_emailed_at_to_users.rb
@@ -0,0 +1,5 @@
+class AddLastEmailedAtToUsers < ActiveRecord::Migration[5.0]
+  def change
+    add_column :users, :last_emailed_at, :datetime, null: true, default: nil
+  end
+end
diff --git a/db/migrate/20170304202101_add_type_to_media_attachments.rb b/db/migrate/20170304202101_add_type_to_media_attachments.rb
new file mode 100644
index 000000000..514079958
--- /dev/null
+++ b/db/migrate/20170304202101_add_type_to_media_attachments.rb
@@ -0,0 +1,12 @@
+class AddTypeToMediaAttachments < ActiveRecord::Migration[5.0]
+  def up
+    add_column :media_attachments, :type, :integer, default: 0, null: false
+
+    MediaAttachment.where(file_content_type: MediaAttachment::IMAGE_MIME_TYPES).update_all(type: MediaAttachment.types[:image])
+    MediaAttachment.where(file_content_type: MediaAttachment::VIDEO_MIME_TYPES).update_all(type: MediaAttachment.types[:video])
+  end
+
+  def down
+    remove_column :media_attachments, :type
+  end
+end
diff --git a/db/migrate/20170317193015_add_search_index_to_accounts.rb b/db/migrate/20170317193015_add_search_index_to_accounts.rb
new file mode 100644
index 000000000..14e174147
--- /dev/null
+++ b/db/migrate/20170317193015_add_search_index_to_accounts.rb
@@ -0,0 +1,9 @@
+class AddSearchIndexToAccounts < ActiveRecord::Migration[5.0]
+  def up
+    execute 'CREATE INDEX search_index ON accounts USING gin((setweight(to_tsvector(\'simple\', accounts.display_name), \'A\') || setweight(to_tsvector(\'simple\', accounts.username), \'B\') || setweight(to_tsvector(\'simple\', coalesce(accounts.domain, \'\')), \'C\')));'
+  end
+
+  def down
+    remove_index :accounts, name: :search_index
+  end
+end
diff --git a/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb b/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb
new file mode 100644
index 000000000..0ba38d3e0
--- /dev/null
+++ b/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb
@@ -0,0 +1,5 @@
+class AddHeaderRemoteUrlToAccounts < ActiveRecord::Migration[5.0]
+  def change
+    add_column :accounts, :header_remote_url, :string, null: false, default: ''
+  end
+end
diff --git a/db/migrate/20170322021028_add_lowercase_index_to_accounts.rb b/db/migrate/20170322021028_add_lowercase_index_to_accounts.rb
new file mode 100644
index 000000000..43032747a
--- /dev/null
+++ b/db/migrate/20170322021028_add_lowercase_index_to_accounts.rb
@@ -0,0 +1,9 @@
+class AddLowercaseIndexToAccounts < ActiveRecord::Migration[5.0]
+  def up
+    execute 'CREATE INDEX index_accounts_on_username_and_domain_lower ON accounts (lower(username), lower(domain))'
+  end
+
+  def down
+    remove_index :accounts, name: 'index_accounts_on_username_and_domain_lower'
+  end
+end
diff --git a/db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb b/db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb
new file mode 100644
index 000000000..16b5db7dd
--- /dev/null
+++ b/db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb
@@ -0,0 +1,15 @@
+class ChangePrimaryKeyToBigintOnStatuses < ActiveRecord::Migration[5.0]
+  def change
+    change_column :statuses, :id, :bigint
+    change_column :statuses, :reblog_of_id, :bigint
+    change_column :statuses, :in_reply_to_id, :bigint
+
+    change_column :media_attachments, :status_id, :bigint
+    change_column :mentions, :status_id, :bigint
+    change_column :notifications, :activity_id, :bigint
+    change_column :preview_cards, :status_id, :bigint
+    change_column :reports, :status_ids, :bigint, array: true
+    change_column :statuses_tags, :status_id, :bigint
+    change_column :stream_entries, :activity_id, :bigint
+  end
+end
diff --git a/db/migrate/20170322162804_add_search_index_to_tags.rb b/db/migrate/20170322162804_add_search_index_to_tags.rb
new file mode 100644
index 000000000..415dff9a0
--- /dev/null
+++ b/db/migrate/20170322162804_add_search_index_to_tags.rb
@@ -0,0 +1,9 @@
+class AddSearchIndexToTags < ActiveRecord::Migration[5.0]
+  def up
+    execute 'CREATE INDEX hashtag_search_index ON tags USING gin(to_tsvector(\'simple\', tags.name));'
+  end
+
+  def down
+    remove_index :tags, name: :hashtag_search_index
+  end
+end
diff --git a/db/migrate/20170330021336_add_counter_caches.rb b/db/migrate/20170330021336_add_counter_caches.rb
new file mode 100644
index 000000000..cf064b9e1
--- /dev/null
+++ b/db/migrate/20170330021336_add_counter_caches.rb
@@ -0,0 +1,13 @@
+class AddCounterCaches < ActiveRecord::Migration[5.0]
+  def change
+    add_column :statuses, :favourites_count, :integer, null: false, default: 0
+    add_column :statuses, :reblogs_count, :integer, null: false, default: 0
+    add_column :accounts, :statuses_count, :integer, null: false, default: 0
+    add_column :accounts, :followers_count, :integer, null: false, default: 0
+    add_column :accounts, :following_count, :integer, null: false, default: 0
+  end
+end
+
+# To make the new fields contain correct data:
+# update statuses set favourites_count = (select count(*) from favourites where favourites.status_id = statuses.id), reblogs_count = (select count(*) from statuses as reblogs where reblogs.reblog_of_id = statuses.id);
+# update accounts set statuses_count = (select count(*) from statuses where account_id = accounts.id), followers_count = (select count(*) from follows where target_account_id = accounts.id), following_count = (select count(*) from follows where account_id = accounts.id);
diff --git a/db/migrate/20170330163835_create_imports.rb b/db/migrate/20170330163835_create_imports.rb
new file mode 100644
index 000000000..d6f74823d
--- /dev/null
+++ b/db/migrate/20170330163835_create_imports.rb
@@ -0,0 +1,11 @@
+class CreateImports < ActiveRecord::Migration[5.0]
+  def change
+    create_table :imports do |t|
+      t.integer :account_id, null: false
+      t.integer :type, null: false
+      t.boolean :approved
+
+      t.timestamps
+    end
+  end
+end
diff --git a/db/migrate/20170330164118_add_attachment_data_to_imports.rb b/db/migrate/20170330164118_add_attachment_data_to_imports.rb
new file mode 100644
index 000000000..4850b0663
--- /dev/null
+++ b/db/migrate/20170330164118_add_attachment_data_to_imports.rb
@@ -0,0 +1,11 @@
+class AddAttachmentDataToImports < ActiveRecord::Migration
+  def self.up
+    change_table :imports do |t|
+      t.attachment :data
+    end
+  end
+
+  def self.down
+    remove_attachment :imports, :data
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index fa5c40774..5a9ca1426 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20170217012631) do
+ActiveRecord::Schema.define(version: 20170330164118) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -43,6 +43,12 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.boolean  "silenced",                default: false, null: false
     t.boolean  "suspended",               default: false, null: false
     t.boolean  "locked",                  default: false, null: false
+    t.string   "header_remote_url",       default: "",    null: false
+    t.integer  "statuses_count",          default: 0,     null: false
+    t.integer  "followers_count",         default: 0,     null: false
+    t.integer  "following_count",         default: 0,     null: false
+    t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin
+    t.index "lower((username)::text), lower((domain)::text)", name: "index_accounts_on_username_and_domain_lower", using: :btree
     t.index ["username", "domain"], name: "index_accounts_on_username_and_domain", unique: true, using: :btree
   end
 
@@ -87,8 +93,20 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true, using: :btree
   end
 
+  create_table "imports", force: :cascade do |t|
+    t.integer  "account_id",        null: false
+    t.integer  "type",              null: false
+    t.boolean  "approved"
+    t.datetime "created_at",        null: false
+    t.datetime "updated_at",        null: false
+    t.string   "data_file_name"
+    t.string   "data_content_type"
+    t.integer  "data_file_size"
+    t.datetime "data_updated_at"
+  end
+
   create_table "media_attachments", force: :cascade do |t|
-    t.integer  "status_id"
+    t.bigint   "status_id"
     t.string   "file_file_name"
     t.string   "file_content_type"
     t.integer  "file_file_size"
@@ -98,21 +116,30 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.datetime "created_at",                     null: false
     t.datetime "updated_at",                     null: false
     t.string   "shortcode"
+    t.integer  "type",              default: 0,  null: false
     t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true, using: :btree
     t.index ["status_id"], name: "index_media_attachments_on_status_id", using: :btree
   end
 
   create_table "mentions", force: :cascade do |t|
     t.integer  "account_id"
-    t.integer  "status_id"
+    t.bigint   "status_id"
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.index ["account_id", "status_id"], name: "index_mentions_on_account_id_and_status_id", unique: true, using: :btree
   end
 
+  create_table "mutes", force: :cascade do |t|
+    t.integer  "account_id",        null: false
+    t.integer  "target_account_id", null: false
+    t.datetime "created_at",        null: false
+    t.datetime "updated_at",        null: false
+    t.index ["account_id", "target_account_id"], name: "index_mutes_on_account_id_and_target_account_id", unique: true, using: :btree
+  end
+
   create_table "notifications", force: :cascade do |t|
     t.integer  "account_id"
-    t.integer  "activity_id"
+    t.bigint   "activity_id"
     t.string   "activity_type"
     t.datetime "created_at",      null: false
     t.datetime "updated_at",      null: false
@@ -160,7 +187,7 @@ ActiveRecord::Schema.define(version: 20170217012631) do
   end
 
   create_table "preview_cards", force: :cascade do |t|
-    t.integer  "status_id"
+    t.bigint   "status_id"
     t.string   "url",                default: "", null: false
     t.string   "title"
     t.string   "description"
@@ -176,7 +203,7 @@ ActiveRecord::Schema.define(version: 20170217012631) do
   create_table "reports", force: :cascade do |t|
     t.integer  "account_id",                        null: false
     t.integer  "target_account_id",                 null: false
-    t.integer  "status_ids",        default: [],    null: false, array: true
+    t.bigint   "status_ids",        default: [],    null: false, array: true
     t.text     "comment",           default: "",    null: false
     t.boolean  "action_taken",      default: false, null: false
     t.datetime "created_at",                        null: false
@@ -193,14 +220,14 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.index ["thing_type", "thing_id", "var"], name: "index_settings_on_thing_type_and_thing_id_and_var", unique: true, using: :btree
   end
 
-  create_table "statuses", force: :cascade do |t|
+  create_table "statuses", id: :bigserial, force: :cascade do |t|
     t.string   "uri"
     t.integer  "account_id",                             null: false
     t.text     "text",                   default: "",    null: false
     t.datetime "created_at",                             null: false
     t.datetime "updated_at",                             null: false
-    t.integer  "in_reply_to_id"
-    t.integer  "reblog_of_id"
+    t.bigint   "in_reply_to_id"
+    t.bigint   "reblog_of_id"
     t.string   "url"
     t.boolean  "sensitive",              default: false
     t.integer  "visibility",             default: 0,     null: false
@@ -208,6 +235,8 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.integer  "application_id"
     t.text     "spoiler_text",           default: "",    null: false
     t.boolean  "reply",                  default: false
+    t.integer  "favourites_count",       default: 0,     null: false
+    t.integer  "reblogs_count",          default: 0,     null: false
     t.index ["account_id"], name: "index_statuses_on_account_id", using: :btree
     t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id", using: :btree
     t.index ["reblog_of_id"], name: "index_statuses_on_reblog_of_id", using: :btree
@@ -215,14 +244,14 @@ ActiveRecord::Schema.define(version: 20170217012631) do
   end
 
   create_table "statuses_tags", id: false, force: :cascade do |t|
-    t.integer "status_id", null: false
+    t.bigint  "status_id", null: false
     t.integer "tag_id",    null: false
     t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true, using: :btree
   end
 
   create_table "stream_entries", force: :cascade do |t|
     t.integer  "account_id"
-    t.integer  "activity_id"
+    t.bigint   "activity_id"
     t.string   "activity_type"
     t.datetime "created_at",                    null: false
     t.datetime "updated_at",                    null: false
@@ -247,6 +276,7 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.string   "name",       default: "", null: false
     t.datetime "created_at",              null: false
     t.datetime "updated_at",              null: false
+    t.index "to_tsvector('simple'::regconfig, (name)::text)", name: "hashtag_search_index", using: :gin
     t.index ["name"], name: "index_tags_on_name", unique: true, using: :btree
   end
 
@@ -275,6 +305,7 @@ ActiveRecord::Schema.define(version: 20170217012631) do
     t.string   "encrypted_otp_secret_salt"
     t.integer  "consumed_timestep"
     t.boolean  "otp_required_for_login"
+    t.datetime "last_emailed_at"
     t.index ["account_id"], name: "index_users_on_account_id", using: :btree
     t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
     t.index ["email"], name: "index_users_on_email", unique: true, using: :btree