diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2020-07-07 15:26:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 15:26:51 +0200 |
commit | 6e25574ce599cbc37b7215ded03c7d07208af6bb (patch) | |
tree | f551a6ff7f5bd6b3f46fdeb14d41625e8d77530d /db | |
parent | 81a3db156401a46037864b5ff46852e3c2e23bc9 (diff) |
Fix media attachments enumeration (#14254)
* Fix media attachment enumeration * Switch media_attachments id to snowflake ids Co-authored-by: Thibaut Girka <thib@sitedethib.com>
Diffstat (limited to 'db')
-rw-r--r-- | db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb | 17 | ||||
-rw-r--r-- | db/schema.rb | 26 |
2 files changed, 30 insertions, 13 deletions
diff --git a/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb new file mode 100644 index 000000000..5c6865b92 --- /dev/null +++ b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb @@ -0,0 +1,17 @@ +class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.1] + def up + # Set up the media_attachments.id column to use our timestamp-based IDs. + safety_assured do + execute("ALTER TABLE media_attachments ALTER COLUMN id SET DEFAULT timestamp_id('media_attachments')") + end + + # Make sure we have a sequence to use. + Mastodon::Snowflake.ensure_id_sequences_exist + end + + def down + execute("LOCK media_attachments") + execute("SELECT setval('media_attachments_id_seq', (SELECT MAX(id) FROM media_attachments))") + execute("ALTER TABLE media_attachments ALTER COLUMN id SET DEFAULT nextval('media_attachments_id_seq')") + end +end diff --git a/db/schema.rb b/db/schema.rb index 712ba1d2d..cf31b6d23 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -77,6 +77,16 @@ ActiveRecord::Schema.define(version: 2020_06_28_133322) do t.index ["target_account_id"], name: "index_account_moderation_notes_on_target_account_id" end + create_table "account_notes", force: :cascade do |t| + t.bigint "account_id" + t.bigint "target_account_id" + t.text "comment", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id", "target_account_id"], name: "index_account_notes_on_account_id_and_target_account_id", unique: true + t.index ["target_account_id"], name: "index_account_notes_on_target_account_id" + end + create_table "account_pins", force: :cascade do |t| t.bigint "account_id" t.bigint "target_account_id" @@ -471,7 +481,7 @@ ActiveRecord::Schema.define(version: 2020_06_28_133322) do t.index ["user_id", "timeline"], name: "index_markers_on_user_id_and_timeline", unique: true end - create_table "media_attachments", force: :cascade do |t| + create_table "media_attachments", id: :bigint, default: -> { "timestamp_id('media_attachments'::text)" }, force: :cascade do |t| t.bigint "status_id" t.string "file_file_name" t.string "file_content_type" @@ -833,16 +843,6 @@ ActiveRecord::Schema.define(version: 2020_06_28_133322) do t.index ["user_id"], name: "index_user_invite_requests_on_user_id" end - create_table "account_notes", force: :cascade do |t| - t.bigint "account_id" - t.bigint "target_account_id" - t.text "comment", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["account_id", "target_account_id"], name: "index_account_notes_on_account_id_and_target_account_id", unique: true - t.index ["target_account_id"], name: "index_account_notes_on_target_account_id" - end - create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.datetime "created_at", null: false @@ -918,6 +918,8 @@ ActiveRecord::Schema.define(version: 2020_06_28_133322) do add_foreign_key "account_migrations", "accounts", on_delete: :cascade add_foreign_key "account_moderation_notes", "accounts" add_foreign_key "account_moderation_notes", "accounts", column: "target_account_id" + add_foreign_key "account_notes", "accounts", column: "target_account_id", on_delete: :cascade + add_foreign_key "account_notes", "accounts", on_delete: :cascade add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade add_foreign_key "account_pins", "accounts", on_delete: :cascade add_foreign_key "account_stats", "accounts", on_delete: :cascade @@ -999,8 +1001,6 @@ ActiveRecord::Schema.define(version: 2020_06_28_133322) do add_foreign_key "statuses_tags", "tags", name: "fk_3081861e21", on_delete: :cascade add_foreign_key "tombstones", "accounts", on_delete: :cascade add_foreign_key "user_invite_requests", "users", on_delete: :cascade - add_foreign_key "account_notes", "accounts", column: "target_account_id", on_delete: :cascade - add_foreign_key "account_notes", "accounts", on_delete: :cascade add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade add_foreign_key "users", "invites", on_delete: :nullify add_foreign_key "users", "oauth_applications", column: "created_by_application_id", on_delete: :nullify |