From 70763ef0ea6cb6b997ac144d8b4d855b16fb838c Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Sat, 25 Jul 2020 23:19:56 -0500 Subject: [Feature, Privacy] Add base support for per-domain post privacy --- ...00725071818_create_status_domain_permissions.rb | 13 ++++++++++++ ...0725080000_create_account_domain_permissions.rb | 13 ++++++++++++ db/schema.rb | 24 +++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20200725071818_create_status_domain_permissions.rb create mode 100644 db/migrate/20200725080000_create_account_domain_permissions.rb (limited to 'db') diff --git a/db/migrate/20200725071818_create_status_domain_permissions.rb b/db/migrate/20200725071818_create_status_domain_permissions.rb new file mode 100644 index 000000000..e8faf3e00 --- /dev/null +++ b/db/migrate/20200725071818_create_status_domain_permissions.rb @@ -0,0 +1,13 @@ +class CreateStatusDomainPermissions < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + create_table :status_domain_permissions do |t| + t.references :status, null: false, index: { algorithm: :concurrently }, foreign_key: { on_delete: :cascade } + t.string :domain, null: false, default: '', index: { algorithm: :concurrently } + t.integer :visibility, null: false, default: 0, index: { algorithm: :concurrently } + end + + add_index :status_domain_permissions, [:status_id, :domain], unique: true, algorithm: :concurrently + end +end diff --git a/db/migrate/20200725080000_create_account_domain_permissions.rb b/db/migrate/20200725080000_create_account_domain_permissions.rb new file mode 100644 index 000000000..2497eda69 --- /dev/null +++ b/db/migrate/20200725080000_create_account_domain_permissions.rb @@ -0,0 +1,13 @@ +class CreateAccountDomainPermissions < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + create_table :account_domain_permissions do |t| + t.references :account, null: false, index: { algorithm: :concurrently }, foreign_key: { on_delete: :cascade } + t.string :domain, null: false, default: '', index: { algorithm: :concurrently } + t.integer :visibility, null: false, default: 0, index: { algorithm: :concurrently } + end + + add_index :account_domain_permissions, [:account_id, :domain], unique: true, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index 111bf086d..0f649b382 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_24_045955) do +ActiveRecord::Schema.define(version: 2020_07_25_080000) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -44,6 +44,16 @@ ActiveRecord::Schema.define(version: 2020_07_24_045955) do t.index ["account_id", "domain"], name: "index_account_domain_blocks_on_account_id_and_domain", unique: true end + create_table "account_domain_permissions", force: :cascade do |t| + t.bigint "account_id", null: false + t.string "domain", default: "", null: false + t.integer "visibility", default: 0, null: false + t.index ["account_id", "domain"], name: "index_account_domain_permissions_on_account_id_and_domain", unique: true + t.index ["account_id"], name: "index_account_domain_permissions_on_account_id" + t.index ["domain"], name: "index_account_domain_permissions_on_domain" + t.index ["visibility"], name: "index_account_domain_permissions_on_visibility" + end + create_table "account_identity_proofs", force: :cascade do |t| t.bigint "account_id" t.string "provider", default: "", null: false @@ -762,6 +772,16 @@ ActiveRecord::Schema.define(version: 2020_07_24_045955) do t.index ["var"], name: "index_site_uploads_on_var", unique: true end + create_table "status_domain_permissions", force: :cascade do |t| + t.bigint "status_id", null: false + t.string "domain", default: "", null: false + t.integer "visibility", default: 0, null: false + t.index ["domain"], name: "index_status_domain_permissions_on_domain" + t.index ["status_id", "domain"], name: "index_status_domain_permissions_on_status_id_and_domain", unique: true + t.index ["status_id"], name: "index_status_domain_permissions_on_status_id" + t.index ["visibility"], name: "index_status_domain_permissions_on_visibility" + end + create_table "status_mutes", force: :cascade do |t| t.integer "account_id", null: false t.bigint "status_id", null: false @@ -950,6 +970,7 @@ ActiveRecord::Schema.define(version: 2020_07_24_045955) do add_foreign_key "account_conversations", "accounts", on_delete: :cascade add_foreign_key "account_conversations", "conversations", on_delete: :cascade add_foreign_key "account_domain_blocks", "accounts", name: "fk_206c6029bd", on_delete: :cascade + add_foreign_key "account_domain_permissions", "accounts", on_delete: :cascade add_foreign_key "account_identity_proofs", "accounts", on_delete: :cascade add_foreign_key "account_migrations", "accounts", column: "target_account_id", on_delete: :nullify add_foreign_key "account_migrations", "accounts", on_delete: :cascade @@ -1030,6 +1051,7 @@ ActiveRecord::Schema.define(version: 2020_07_24_045955) do add_foreign_key "scheduled_statuses", "accounts", on_delete: :cascade add_foreign_key "session_activations", "oauth_access_tokens", column: "access_token_id", name: "fk_957e5bda89", on_delete: :cascade add_foreign_key "session_activations", "users", name: "fk_e5fda67334", on_delete: :cascade + add_foreign_key "status_domain_permissions", "statuses", on_delete: :cascade add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade add_foreign_key "status_pins", "statuses", on_delete: :cascade add_foreign_key "status_stats", "statuses", on_delete: :cascade -- cgit