diff options
Diffstat (limited to 'db')
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 |