From d5edf22d91d15a6cc045b718a6b6609b6c29b8c6 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 15 Apr 2021 05:24:28 +0200
Subject: Change account ids to snowflake ids (#15844)

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
---
 .../20210306164523_account_ids_to_timestamp_ids.rb      | 17 +++++++++++++++++
 db/schema.rb                                            |  2 +-
 2 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 db/migrate/20210306164523_account_ids_to_timestamp_ids.rb

diff --git a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
new file mode 100644
index 000000000..39cd4cdea
--- /dev/null
+++ b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
@@ -0,0 +1,17 @@
+class AccountIdsToTimestampIds < ActiveRecord::Migration[5.1]
+  def up
+    # Set up the accounts.id column to use our timestamp-based IDs.
+    safety_assured do
+      execute("ALTER TABLE accounts ALTER COLUMN id SET DEFAULT timestamp_id('accounts')")
+    end
+
+    # Make sure we have a sequence to use.
+    Mastodon::Snowflake.ensure_id_sequences_exist
+  end
+
+  def down
+    execute("LOCK accounts")
+    execute("SELECT setval('accounts_id_seq', (SELECT MAX(id) FROM accounts))")
+    execute("ALTER TABLE accounts ALTER COLUMN id SET DEFAULT nextval('accounts_id_seq')")
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 28f36abb1..01aeb7153 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -142,7 +142,7 @@ ActiveRecord::Schema.define(version: 2021_03_24_171613) do
     t.index ["target_account_id"], name: "index_account_warnings_on_target_account_id"
   end
 
-  create_table "accounts", force: :cascade do |t|
+  create_table "accounts", id: :bigint, default: -> { "timestamp_id('statuses'::text)" }, force: :cascade do |t|
     t.string "username", default: "", null: false
     t.string "domain"
     t.string "secret", default: "", null: false
-- 
cgit