aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-09-01 16:20:16 +0200
committerGitHub <noreply@github.com>2017-09-01 16:20:16 +0200
commit7dc5035031a697e7a2726fcd787fc9c294751027 (patch)
treead2e2fe24ba604c07e4c329315efdf1479759cc8 /db
parent2305f7c391325c7abf8746ebb2bb560c13df4437 (diff)
downloadmastodon-7dc5035031a697e7a2726fcd787fc9c294751027.tar
mastodon-7dc5035031a697e7a2726fcd787fc9c294751027.tar.gz
mastodon-7dc5035031a697e7a2726fcd787fc9c294751027.tar.bz2
mastodon-7dc5035031a697e7a2726fcd787fc9c294751027.zip
Make PreviewCard records reuseable between statuses (#4642)
* Make PreviewCard records reuseable between statuses **Warning!** Migration truncates preview_cards tablec * Allow a wider thumbnail for link preview, display it in horizontal layout (#4648) * Delete preview cards files before truncating * Rename old table instead of truncating it * Add mastodon:maintenance:remove_deprecated_preview_cards * Ignore deprecated_preview_cards in schema definition * Fix null behaviour
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20170901141119_truncate_preview_cards.rb30
-rw-r--r--db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb7
-rw-r--r--db/schema.rb22
3 files changed, 50 insertions, 9 deletions
diff --git a/db/migrate/20170901141119_truncate_preview_cards.rb b/db/migrate/20170901141119_truncate_preview_cards.rb
new file mode 100644
index 000000000..4d9802f3b
--- /dev/null
+++ b/db/migrate/20170901141119_truncate_preview_cards.rb
@@ -0,0 +1,30 @@
+class TruncatePreviewCards < ActiveRecord::Migration[5.1]
+ def up
+ rename_table :preview_cards, :deprecated_preview_cards
+
+ create_table :preview_cards do |t|
+ t.string :url, default: '', null: false, index: { unique: true }
+ t.string :title, default: '', null: false
+ t.string :description, default: '', null: false
+ t.attachment :image
+ t.integer :type, default: 0, null: false
+ t.text :html, default: '', null: false
+ t.string :author_name, default: '', null: false
+ t.string :author_url, default: '', null: false
+ t.string :provider_name, default: '', null: false
+ t.string :provider_url, default: '', null: false
+ t.integer :width, default: 0, null: false
+ t.integer :height, default: 0, null: false
+ t.timestamps
+ end
+ end
+
+ def down
+ if ActiveRecord::Base.connection.table_exists? 'deprecated_preview_cards'
+ drop_table :preview_cards
+ rename_table :deprecated_preview_cards, :preview_cards
+ else
+ raise ActiveRecord::IrreversibleMigration, 'Previous preview cards table has already been removed'
+ end
+ end
+end
diff --git a/db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb b/db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb
new file mode 100644
index 000000000..be7f533b5
--- /dev/null
+++ b/db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb
@@ -0,0 +1,7 @@
+class CreateJoinTablePreviewCardsStatuses < ActiveRecord::Migration[5.1]
+ def change
+ create_join_table :preview_cards, :statuses do |t|
+ t.index [:status_id, :preview_card_id]
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 5bef5948b..c3a2581e3 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: 20170829215220) do
+ActiveRecord::Schema.define(version: 20170901142658) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -224,17 +224,14 @@ ActiveRecord::Schema.define(version: 20170829215220) do
t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
end
- create_table "preview_cards", id: :serial, force: :cascade do |t|
- t.bigint "status_id"
+ create_table "preview_cards", force: :cascade do |t|
t.string "url", default: "", null: false
- t.string "title"
- t.string "description"
+ t.string "title", default: "", null: false
+ t.string "description", default: "", null: false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
t.integer "type", default: 0, null: false
t.text "html", default: "", null: false
t.string "author_name", default: "", null: false
@@ -243,7 +240,15 @@ ActiveRecord::Schema.define(version: 20170829215220) do
t.string "provider_url", default: "", null: false
t.integer "width", default: 0, null: false
t.integer "height", default: 0, null: false
- t.index ["status_id"], name: "index_preview_cards_on_status_id", unique: true
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["url"], name: "index_preview_cards_on_url", unique: true
+ end
+
+ create_table "preview_cards_statuses", id: false, force: :cascade do |t|
+ t.bigint "preview_card_id", null: false
+ t.bigint "status_id", null: false
+ t.index ["status_id", "preview_card_id"], name: "index_preview_cards_statuses_on_status_id_and_preview_card_id"
end
create_table "reports", id: :serial, force: :cascade do |t|
@@ -432,7 +437,6 @@ ActiveRecord::Schema.define(version: 20170829215220) do
add_foreign_key "oauth_access_tokens", "oauth_applications", column: "application_id", on_delete: :cascade
add_foreign_key "oauth_access_tokens", "users", column: "resource_owner_id", on_delete: :cascade
add_foreign_key "oauth_applications", "users", column: "owner_id", on_delete: :cascade
- add_foreign_key "preview_cards", "statuses", on_delete: :cascade
add_foreign_key "reports", "accounts", column: "action_taken_by_account_id", on_delete: :nullify
add_foreign_key "reports", "accounts", column: "target_account_id", on_delete: :cascade
add_foreign_key "reports", "accounts", on_delete: :cascade