mastodon/db/migrate/20260115153219_use_snowflake_ids_for_collections.rb

26 lines
885 B
Ruby

# frozen_string_literal: true
class UseSnowflakeIdsForCollections < ActiveRecord::Migration[8.0]
def up
safety_assured do
execute(<<~SQL.squish)
ALTER TABLE collections ALTER COLUMN id SET DEFAULT timestamp_id('collections');
ALTER TABLE collection_items ALTER COLUMN id SET DEFAULT timestamp_id('collection_items');
SQL
end
Mastodon::Snowflake.ensure_id_sequences_exist
end
def down
execute(<<~SQL.squish)
LOCK collections;
SELECT setval('collections_id_seq', (SELECT MAX(id) FROM collections));
ALTER TABLE collections ALTER COLUMN id SET DEFAULT nextval('collections_id_seq');
LOCK collection_items;
SELECT setval('collection_items_id_seq', (SELECT MAX(id) FROM collection_items));
ALTER TABLE collection_items ALTER COLUMN id SET DEFAULT nextval('collection_items_id_seq');
SQL
end
end