From 52b500e482180b20bb988c09c07c39a492512c31 Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Fri, 31 Jul 2020 21:39:29 -0500 Subject: [Feature, Database] Add migrations and models for queued boosts, delayed publishing, and self-destructing posts --- .../20200731163700_create_destructing_statuses.rb | 11 ++++++++ db/migrate/20200731205913_create_queued_boosts.rb | 10 ++++++++ .../20200731211100_create_publishing_delays.rb | 10 ++++++++ db/schema.rb | 29 +++++++++++++++++++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20200731163700_create_destructing_statuses.rb create mode 100644 db/migrate/20200731205913_create_queued_boosts.rb create mode 100644 db/migrate/20200731211100_create_publishing_delays.rb (limited to 'db') diff --git a/db/migrate/20200731163700_create_destructing_statuses.rb b/db/migrate/20200731163700_create_destructing_statuses.rb new file mode 100644 index 000000000..4923eb393 --- /dev/null +++ b/db/migrate/20200731163700_create_destructing_statuses.rb @@ -0,0 +1,11 @@ +class CreateDestructingStatuses < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + create_table :destructing_statuses do |t| + t.references :status, null: false, unique: true, foreign_key: { on_delete: :cascade } + t.datetime :after, null: false, index: { algorithm: :concurrently } + t.boolean :defederate_only, null: false, default: false + end + end +end diff --git a/db/migrate/20200731205913_create_queued_boosts.rb b/db/migrate/20200731205913_create_queued_boosts.rb new file mode 100644 index 000000000..33ddbb966 --- /dev/null +++ b/db/migrate/20200731205913_create_queued_boosts.rb @@ -0,0 +1,10 @@ +class CreateQueuedBoosts < ActiveRecord::Migration[5.2] + def change + create_table :queued_boosts do |t| + t.references :account, null: false, foreign_key: { on_delete: :cascade } + t.references :status, null: false, foreign_key: { on_delete: :cascade } + end + + add_index :queued_boosts, [:account_id, :status_id], unique: true + end +end diff --git a/db/migrate/20200731211100_create_publishing_delays.rb b/db/migrate/20200731211100_create_publishing_delays.rb new file mode 100644 index 000000000..9561ca0b2 --- /dev/null +++ b/db/migrate/20200731211100_create_publishing_delays.rb @@ -0,0 +1,10 @@ +class CreatePublishingDelays < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + create_table :publishing_delays do |t| + t.references :status, null: false, unique: true, foreign_key: { on_delete: :cascade } + t.datetime :after, index: { algorithm: :concurrently } + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 06d012600..5e0bf0b13 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: 2020_07_31_135033) do +ActiveRecord::Schema.define(version: 2020_07_31_211100) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -347,6 +347,14 @@ ActiveRecord::Schema.define(version: 2020_07_31_135033) do t.index ["account_id"], name: "index_custom_filters_on_account_id" end + create_table "destructing_statuses", force: :cascade do |t| + t.bigint "status_id", null: false + t.datetime "after", null: false + t.boolean "defederate_only", default: false, null: false + t.index ["after"], name: "index_destructing_statuses_on_after" + t.index ["status_id"], name: "index_destructing_statuses_on_status_id" + end + create_table "devices", force: :cascade do |t| t.bigint "access_token_id" t.bigint "account_id" @@ -703,6 +711,21 @@ ActiveRecord::Schema.define(version: 2020_07_31_135033) do t.index ["status_id", "preview_card_id"], name: "index_preview_cards_statuses_on_status_id_and_preview_card_id" end + create_table "publishing_delays", force: :cascade do |t| + t.bigint "status_id", null: false + t.datetime "after" + t.index ["after"], name: "index_publishing_delays_on_after" + t.index ["status_id"], name: "index_publishing_delays_on_status_id" + end + + create_table "queued_boosts", force: :cascade do |t| + t.bigint "account_id", null: false + t.bigint "status_id", null: false + t.index ["account_id", "status_id"], name: "index_queued_boosts_on_account_id_and_status_id", unique: true + t.index ["account_id"], name: "index_queued_boosts_on_account_id" + t.index ["status_id"], name: "index_queued_boosts_on_status_id" + end + create_table "relays", force: :cascade do |t| t.string "inbox_url", default: "", null: false t.string "follow_activity_id" @@ -1011,6 +1034,7 @@ ActiveRecord::Schema.define(version: 2020_07_31_135033) do add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade add_foreign_key "conversations", "accounts" add_foreign_key "custom_filters", "accounts", on_delete: :cascade + add_foreign_key "destructing_statuses", "statuses", on_delete: :cascade add_foreign_key "devices", "accounts", on_delete: :cascade add_foreign_key "devices", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade add_foreign_key "email_domain_blocks", "email_domain_blocks", column: "parent_id", on_delete: :cascade @@ -1053,6 +1077,9 @@ ActiveRecord::Schema.define(version: 2020_07_31_135033) do add_foreign_key "poll_votes", "polls", on_delete: :cascade add_foreign_key "polls", "accounts", on_delete: :cascade add_foreign_key "polls", "statuses", on_delete: :cascade + add_foreign_key "publishing_delays", "statuses", on_delete: :cascade + add_foreign_key "queued_boosts", "accounts", on_delete: :cascade + add_foreign_key "queued_boosts", "statuses", on_delete: :cascade add_foreign_key "report_notes", "accounts", on_delete: :cascade add_foreign_key "report_notes", "reports", on_delete: :cascade add_foreign_key "reports", "accounts", column: "action_taken_by_account_id", name: "fk_bca45b75fd", on_delete: :nullify -- cgit