[#1033] Fix database migrations
authorMaksim <parallel588@gmail.com>
Mon, 1 Jul 2019 01:08:07 +0000 (01:08 +0000)
committerfeld <feld@feld.me>
Mon, 1 Jul 2019 01:08:07 +0000 (01:08 +0000)
70 files changed:
priv/repo/migrations/20170320193800_create_user.exs
priv/repo/migrations/20170321074828_create_activity.exs
priv/repo/migrations/20170321074832_create_object.exs
priv/repo/migrations/20170330153447_add_index_to_objects.exs
priv/repo/migrations/20170415141210_add_unique_index_to_email_and_nickname.exs
priv/repo/migrations/20170418200143_create_webssub_server_subscription.exs
priv/repo/migrations/20170426154155_create_websub_client_subscription.exs
priv/repo/migrations/20170501133231_add_id_contraints_to_activities_and_objects_part_two.exs
priv/repo/migrations/20170502083023_add_local_field_to_activities.exs
priv/repo/migrations/20170506222027_add_unique_index_to_apid.exs
priv/repo/migrations/20170529093232_longer_bios.exs
priv/repo/migrations/20170620095947_remove_activities_index.exs
priv/repo/migrations/20170620133028_add_object_activity_index.exs
priv/repo/migrations/20170620142420_add_object_activity_index_part_two.exs
priv/repo/migrations/20170701142005_add_actor_index_to_activity.exs
priv/repo/migrations/20170906120646_add_mastodon_apps.exs
priv/repo/migrations/20170906143140_create_o_auth_authorizations.exs
priv/repo/migrations/20170906152508_create_o_auth_token.exs
priv/repo/migrations/20170911123607_create_notifications.exs
priv/repo/migrations/20171019141706_create_password_reset_tokens.exs
priv/repo/migrations/20171109091239_add_actor_to_activity.exs
priv/repo/migrations/20171130135819_add_local_index_to_user.exs
priv/repo/migrations/20171212163643_add_recipients_to_activities.exs
priv/repo/migrations/20171212164525_fill_recipients_in_activities.exs
priv/repo/migrations/20180221210540_make_following_postgres_array.exs
priv/repo/migrations/20180327174350_drop_local_index_on_activities.exs
priv/repo/migrations/20180327175831_actually_drop_local_index.exs
priv/repo/migrations/20180429094642_create_lists.exs
priv/repo/migrations/20180516154905_create_user_trigram_index.exs
priv/repo/migrations/20180530123448_add_list_follow_index.exs
priv/repo/migrations/20180612110515_create_user_invite_tokens.exs
priv/repo/migrations/20180813003722_create_filters.exs
priv/repo/migrations/20180829082446_add_recipients_to_and_cc_fields_to_activities.exs
priv/repo/migrations/20180829182612_activities_add_to_cc_indices.exs
priv/repo/migrations/20180829183529_remove_recipients_to_and_cc_fields_from_activities.exs
priv/repo/migrations/20180903114437_users_add_is_moderator_index.exs
priv/repo/migrations/20180918182427_create_push_subscriptions.exs
priv/repo/migrations/20181201104428_add_uuid_extension.exs
priv/repo/migrations/20181201105617_add_uui_ds_to_user_info.exs
priv/repo/migrations/20181206125616_add_tags_to_users.exs
priv/repo/migrations/20181218172826_users_and_activities_flake_id.exs
priv/repo/migrations/20190109152453_add_visibility_function.exs
priv/repo/migrations/20190115085500_create_user_fts_index.exs
priv/repo/migrations/20190118074940_fix_user_trigram_index.exs
priv/repo/migrations/20190123092341_users_add_is_admin_index.exs
priv/repo/migrations/20190123125546_create_instances.exs
priv/repo/migrations/20190123125839_fix_info_ids.exs
priv/repo/migrations/20190126160540_change_push_subscriptions_varchar.exs
priv/repo/migrations/20190204200237_add_correct_dm_index.exs
priv/repo/migrations/20190205114625_create_thread_mutes.exs
priv/repo/migrations/20190315101315_create_registrations.exs
priv/repo/migrations/20190325185009_create_notification_id_index.exs
priv/repo/migrations/20190328053912_create_scheduled_activities.exs
priv/repo/migrations/20190403131720_add_oauth_token_indexes.exs
priv/repo/migrations/20190405160700_add_index_on_subscribers.exs
priv/repo/migrations/20190408123347_create_conversations.exs
priv/repo/migrations/20190410152859_add_participation_updated_at_index.exs
priv/repo/migrations/20190411094120_add_index_on_user_info_deactivated.exs
priv/repo/migrations/20190413082658_create_bookmarks.exs
priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs
priv/repo/migrations/20190501125843_add_fts_index_to_objects.exs
priv/repo/migrations/20190501133552_add_refresh_token_index_to_token.exs
priv/repo/migrations/20190513175809_change_hide_column_in_filter_table.exs
priv/repo/migrations/20190515222404_add_thread_visibility_function.exs
priv/repo/migrations/20190518032627_create_config.exs
priv/repo/migrations/20190525071417_add_non_follows_and_non_followers_fields_to_notification_settings.exs
priv/repo/migrations/20190603115238_add_index_on_activities_local.exs
priv/repo/migrations/20190603173419_add_tag_index_to_objects.exs
priv/repo/migrations/20190622151019_add_group_key_to_config.exs
priv/repo/optional_migrations/rum_indexing/20190510135645_add_fts_index_to_objects_two.exs

index 2d2f7fbf02bc2407b65fa6698b17962c87b9dd8b..089964a26eaadaf57397008c35941cee51769838 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreatePleroma.User do
   use Ecto.Migration
 
   def change do
-    create table(:users) do
+    create_if_not_exists table(:users) do
       add :email, :string
       add :password_hash, :string
       add :name, :string
index 6e875ae43f866762e8301fca7d8d149a0386875d..f5c872721d2bef6f336c2b302b9371d8bbd44810 100644 (file)
@@ -2,13 +2,13 @@ defmodule Pleroma.Repo.Migrations.CreatePleroma.Activity do
   use Ecto.Migration
 
   def change do
-    create table(:activities) do
+    create_if_not_exists table(:activities) do
       add :data, :map
 
       timestamps()
     end
 
-    create index(:activities, [:data], using: :gin)
+    create_if_not_exists index(:activities, [:data], using: :gin)
 
   end
 end
index b8bd4974730f67090d94c1f1d475f2c61ef8c5d3..b184672ad6a578b653a8469397f8efa861338994 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreatePleroma.Object do
   use Ecto.Migration
 
   def change do
-    create table(:objects) do
+    create_if_not_exists table(:objects) do
       add :data, :map
 
       timestamps()
index 30ed61f514b267537d25d8790c6a60426600dfe7..25e308533ab394db7a12003f80d8f861f733c672 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddIndexToObjects do
   use Ecto.Migration
 
   def change do
-    create index(:objects, [:data], using: :gin)
+    create_if_not_exists index(:objects, [:data], using: :gin)
   end
 end
index 361ca04daf6297ae12f5579c5102dd8b0991930c..42da88954707afb17e05d0a1322ec692ed09839a 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.AddUniqueIndexToEmailAndNickname do
   use Ecto.Migration
 
   def change do
-    create unique_index(:users, [:email])
-    create unique_index(:users, [:nickname])
+    create_if_not_exists unique_index(:users, [:email])
+    create_if_not_exists unique_index(:users, [:nickname])
   end
 end
index fe2fa230414a0cb7d78f7924e3e8cf6a3700b824..2432803781ef368bb97f0a13845667298afca246 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateWebsubServerSubscription do
   use Ecto.Migration
 
   def change do
-    create table(:websub_server_subscriptions) do
+    create_if_not_exists table(:websub_server_subscriptions) do
       add :topic, :string
       add :callback, :string
       add :secret, :string
index 89d3af7aee5ff7ac67c47c44b50f3fc29213c270..4b79d7506203ef15067a1dfa47d32d72458e568c 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateWebsubClientSubscription do
   use Ecto.Migration
 
   def change do
-    create table(:websub_client_subscriptions) do
+    create_if_not_exists table(:websub_client_subscriptions) do
       add :topic, :string
       add :secret, :string
       add :valid_until, :naive_datetime_usec
index 1472b60b4cd8a369e3083e834d297918716677ae..f5e5cd269809e708198d22db35c502831f8c78c8 100644 (file)
@@ -1,10 +1,12 @@
 defmodule Pleroma.Repo.Migrations.AddIdContraintsToActivitiesAndObjectsPartTwo do
   use Ecto.Migration
 
-  def change do
+  def up do
     drop_if_exists index(:objects, ["(data->>\"id\")"], name: :objects_unique_apid_index)
     drop_if_exists index(:activities, ["(data->>\"id\")"], name: :activities_unique_apid_index)
-    create unique_index(:objects, ["(data->>'id')"], name: :objects_unique_apid_index)
-    create unique_index(:activities, ["(data->>'id')"], name: :activities_unique_apid_index)
+    create_if_not_exists unique_index(:objects, ["(data->>'id')"], name: :objects_unique_apid_index)
+    create_if_not_exists unique_index(:activities, ["(data->>'id')"], name: :activities_unique_apid_index)
   end
+
+  def down, do: :ok
 end
index 088d68f675a60b979b5899781b7991efaccbee68..cebc11d217965e0568ba982f27127cfd1015317f 100644 (file)
@@ -6,6 +6,6 @@ defmodule Pleroma.Repo.Migrations.AddLocalFieldToActivities do
       add :local, :boolean, default: true
     end
 
-    create index(:activities, [:local])
+    create_if_not_exists index(:activities, [:local])
   end
 end
index 864b5e47dab81fb64ee94c6163d2e2e40e8f67d0..1b7e33b70eda8da9f40b1ecce2b42c125b4767e4 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddUniqueIndexToAPID do
   use Ecto.Migration
 
   def change do
-    create unique_index(:users, [:ap_id])
+    create_if_not_exists unique_index(:users, [:ap_id])
   end
 end
index f8c14b1175ca44d891af06a2ef59a4cedaed25bd..9188f4beef691aa70524a6d2b8bff87050fbf564 100644 (file)
@@ -1,9 +1,16 @@
 defmodule Pleroma.Repo.Migrations.LongerBios do
   use Ecto.Migration
 
-  def change do
+  def up do
     alter table(:users) do
       modify :bio, :text
     end
   end
+
+  def down do
+    alter table(:users) do
+      modify :bio, :string
+    end
+  end
+
 end
index 85feabeebf6886b582bbfe56df1180598706cd81..e7d41eac449a50bd7315aae9bd926b8aaee66338 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.RemoveActivitiesIndex do
   use Ecto.Migration
 
   def change do
-    drop index(:activities, [:data])
+    drop_if_exists index(:activities, [:data])
   end
 end
index df0b8391e50e544cd94ae6d7506984a082d71004..5c312b8f43ec15868c59b40b2a3e98de20614b48 100644 (file)
@@ -3,6 +3,6 @@ defmodule Pleroma.Repo.Migrations.AddObjectActivityIndex do
 
   def change do
     # This was wrong, now a noop
-    # create index(:objects, ["(data->'object'->>'id')", "(data->>'type')"], name: :activities_create_objects_index)
+    # create_if_not_exists index(:objects, ["(data->'object'->>'id')", "(data->>'type')"], name: :activities_create_objects_index)
   end
 end
index 8d5a95c45e9707b2b1333ba20db9bec3db8a5b38..c95218fad4ee454b10a9ad3eda9830e9d3e50789 100644 (file)
@@ -3,6 +3,6 @@ defmodule Pleroma.Repo.Migrations.AddObjectActivityIndexPartTwo do
 
   def change do
     drop_if_exists index(:objects, ["(data->'object'->>'id')", "(data->>'type')"], name: :activities_create_objects_index)
-    create index(:activities, ["(data->'object'->>'id')", "(data->>'type')"], name: :activities_create_objects_index)
+    create_if_not_exists index(:activities, ["(data->'object'->>'id')", "(data->>'type')"], name: :activities_create_objects_index)
   end
 end
index 82c64396f3090bcd68b76999e4e793c3d154bc2b..807fe37287d48b4ec874f0e13572cbf7aafb7d50 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddActorIndexToActivity do
   use Ecto.Migration
 
   def change do
-    create index(:activities, ["(data->>'actor')", "inserted_at desc"], name: :activities_actor_index)
+    create_if_not_exists index(:activities, ["(data->>'actor')", "inserted_at desc"], name: :activities_actor_index)
   end
 end
index d3dd317dd6082cdd3e3b220b0d704c71c5eb8c11..ccd5e3fe2091579f89ddbcaf0ac30d853f3055e9 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.AddMastodonApps do
   use Ecto.Migration
 
   def change do
-    create table(:apps) do
+    create_if_not_exists table(:apps) do
       add :client_name, :string
       add :redirect_uris, :string
       add :scopes, :string
index ead1d023e06f9bf0de991bb9e58f4d27e5908ccd..63b25c53722c4775cbde6f9231f5ce35d88f4123 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateOAuthAuthorizations do
   use Ecto.Migration
 
   def change do
-    create table(:oauth_authorizations) do
+    create_if_not_exists table(:oauth_authorizations) do
       add :app_id, references(:apps)
       add :user_id, references(:users)
       add :token, :string
index ed56bbf364ed93bbbb8b129e49a468bd2d2224fc..08471bbf8b4a6d0495ee05c2ac3105ee91c72188 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateOAuthToken do
   use Ecto.Migration
 
   def change do
-    create table(:oauth_tokens) do
+    create_if_not_exists table(:oauth_tokens) do
       add :app_id, references(:apps)
       add :user_id, references(:users)
       add :token, :string
index 5be809fb8ae0ac0fdbd0b1ea0f7755971998d4a3..50de9c5f126e09297229bdd8734d416f47bf5fd0 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateNotifications do
   use Ecto.Migration
 
   def change do
-    create table(:notifications) do
+    create_if_not_exists table(:notifications) do
       add :user_id, references(:users, on_delete: :delete_all)
       add :activity_id, references(:activities, on_delete: :delete_all)
       add :seen, :boolean, default: false
@@ -10,6 +10,6 @@ defmodule Pleroma.Repo.Migrations.CreateNotifications do
       timestamps()
     end
 
-    create index(:notifications, [:user_id])
+    create_if_not_exists index(:notifications, [:user_id])
   end
 end
index 2d9be3aabb3b830239d3afd227d3ce73ba949dd2..dde0f945fa3f3ec46345ff90968efcc22fc6d22e 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreatePasswordResetTokens do
   use Ecto.Migration
 
   def change do
-    create table(:password_reset_tokens) do
+    create_if_not_exists table(:password_reset_tokens) do
       add :token, :string
       add :user_id, references(:users)
       add :used, :boolean, default: false
index 2d8b60a918c1045af786468779a21b99246d43de..fb5f80c98f61027b5fc9215c1228f3dcece3a9b4 100644 (file)
@@ -12,7 +12,7 @@ defmodule Pleroma.Repo.Migrations.AddActorToActivity do
   end
 
   def down do
-    drop index(:activities, [:actor, "id DESC NULLS LAST"])
+    drop_if_exists index(:activities, [:actor, "id DESC NULLS LAST"])
     alter table(:activities) do
       remove :actor
     end
index 25716be213693c2036862498a340e4a7f7fa1266..3438bbbc498c1f424e1c19fb56baeec291e80eea 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddLocalIndexToUser do
   use Ecto.Migration
 
   def change do
-    create index(:users, [:local])
+    create_if_not_exists index(:users, [:local])
   end
 end
index 7bce78108df4aa1bda4f0d3596f25eb496559b05..4520b398eaf6090bff43a8fdbd7243e760a7a6f0 100644 (file)
@@ -6,6 +6,6 @@ defmodule Pleroma.Repo.Migrations.AddRecipientsToActivities do
       add :recipients, {:array, :string}
     end
 
-    create index(:activities, [:recipients], using: :gin)
+    create_if_not_exists index(:activities, [:recipients], using: :gin)
   end
 end
index 1fcc0dabb07d06fb5f359ccfc752c4376de80b54..87de64ca5a199ebda89ecc8fa674c3729dbf18b4 100644 (file)
@@ -18,4 +18,6 @@ defmodule Pleroma.Repo.Migrations.FillRecipientsInActivities do
       end)
     end
   end
+
+  def down, do: :ok
 end
index 98ca7d9d72c86030797dc8191d45a13915f265e7..5a8f8f6697b690f35884613947f3e0327f77b2b7 100644 (file)
@@ -1,7 +1,7 @@
 defmodule Pleroma.Repo.Migrations.MakeFollowingPostgresArray do
   use Ecto.Migration
 
-  def change do
+  def up do
     alter table(:users) do
       add :following_temp, {:array, :string}
     end
@@ -15,4 +15,6 @@ defmodule Pleroma.Repo.Migrations.MakeFollowingPostgresArray do
     end
     rename table(:users), :following_temp, to: :following
   end
+
+  def down, do: :ok
 end
index 70f2c9fe66b743e90f95505329cf0a13942713cb..35c4ce62f338e767d1f61fcbf2d03671ba813b10 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.DropLocalIndexOnActivities do
   use Ecto.Migration
 
   def change do
-    drop index(:users, [:local])
+    drop_if_exists index(:users, [:local])
   end
 end
index 2da65689cc6ae9e5a3b7464dacc065f071fc2a46..7556336eda1fbcc5725bd25476b8c33dedbc0a10 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.ActuallyDropLocalIndex do
   use Ecto.Migration
 
   def change do
-    create index(:users, [:local])
+    create_if_not_exists index(:users, [:local])
     drop_if_exists index("activities", :local)
   end
 end
index 64c62250e2502dd00f87147959f29eccfc726d5c..9d3ce50b34d1536117ade4825a38ab78bba110e9 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateLists do
   use Ecto.Migration
 
   def change do
-    create table(:lists) do
+    create_if_not_exists table(:lists) do
       add :user_id, references(:users, on_delete: :delete_all)
       add :title, :string
       add :following, {:array, :string}
@@ -10,6 +10,6 @@ defmodule Pleroma.Repo.Migrations.CreateLists do
       timestamps()
     end
 
-    create index(:lists, [:user_id])
+    create_if_not_exists index(:lists, [:user_id])
   end
 end
index abfa4b3cc41fcc8aac91f5dfa1a8962161082c0a..58622a87e538c7bb125a7d32b6f69d84d2b226bf 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.CreateUserTrigramIndex do
   use Ecto.Migration
 
   def change do
-    create index(:users, ["(nickname || name) gist_trgm_ops"], name: :users_trigram_index, using: :gist)
+    create_if_not_exists index(:users, ["(nickname || name) gist_trgm_ops"], name: :users_trigram_index, using: :gist)
   end
 end
index d6603e916100691f52db5b90ad2c25eca0a4d951..86b8de30a3e54e71b2c6d0eb428ad0ce469de4ba 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddListFollowIndex do
   use Ecto.Migration
 
   def change do
-    create index(:lists, [:following])
+    create_if_not_exists index(:lists, [:following])
   end
 end
index d0a1cf784791050210cfedede38f87b608bdd97c..faee379f0fc929d50db603dd280add4db885507a 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateUserInviteTokens do
   use Ecto.Migration
 
   def change do
-    create table(:user_invite_tokens) do
+    create_if_not_exists table(:user_invite_tokens) do
       add :token, :string
       add :used, :boolean, default: false
 
index 8e7129f342c3c9cd24fbce573e0c7226306c30f3..541cf46a10621f796bdd8d0b9c2995a48d030125 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateFilters do
   use Ecto.Migration
 
   def change do
-    create table(:filters) do
+    create_if_not_exists table(:filters) do
       add :user_id, references(:users, on_delete: :delete_all)
       add :filter_id, :integer
       add :hide, :boolean
@@ -14,7 +14,7 @@ defmodule Pleroma.Repo.Migrations.CreateFilters do
       timestamps()
     end
 
-    create index(:filters, [:user_id])
-    create index(:filters, [:phrase], where: "hide = true", name: :hided_phrases_index)
+    create_if_not_exists index(:filters, [:user_id])
+    create_if_not_exists index(:filters, [:phrase], where: "hide = true", name: :hided_phrases_index)
   end
 end
index 96af412f0afbb318c2e3436b1cdb4a491299012c..af9d521c0f17ba2145e4b5348e809c33c25dcff1 100644 (file)
@@ -7,7 +7,7 @@ defmodule Pleroma.Repo.Migrations.AddRecipientsToAndCcFieldsToActivities do
       add :recipients_cc, {:array, :string}
     end
 
-    create index(:activities, [:recipients_to], using: :gin)
-    create index(:activities, [:recipients_cc], using: :gin)
+    create_if_not_exists index(:activities, [:recipients_to], using: :gin)
+    create_if_not_exists index(:activities, [:recipients_cc], using: :gin)
   end
 end
index f6c622e3ec8c4007a4bd611e95d2b42e7b9abee2..9d31f67790689d813bac798e06ef63ec09ad476f 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.ActivitiesAddToCcIndices do
   use Ecto.Migration
 
   def change do
-    create index(:activities, ["(data->'to')"], name: :activities_to_index, using: :gin)
-    create index(:activities, ["(data->'cc')"], name: :activities_cc_index, using: :gin)
+    create_if_not_exists index(:activities, ["(data->'to')"], name: :activities_to_index, using: :gin)
+    create_if_not_exists index(:activities, ["(data->'cc')"], name: :activities_cc_index, using: :gin)
   end
 end
index ed4f5af302021c14455aef1374871afc216da607..017ef161fabb1d5cc7c99ff173af3d101dbfb760 100644 (file)
@@ -1,10 +1,17 @@
 defmodule Pleroma.Repo.Migrations.RemoveRecipientsToAndCcFieldsFromActivities do
   use Ecto.Migration
 
-  def change do
+  def up do
     alter table(:activities) do
       remove :recipients_to
       remove :recipients_cc
     end
   end
+
+  def down do
+    alter table(:activities) do
+      add :recipients_to, {:array, :string}
+      add :recipients_cc, {:array, :string}
+    end
+  end
 end
index ba6b90ea966efd326c6ab9cfb24233ed8da86351..adce28bdfedea406ec9fc99e82e8fcc07c908930 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.UsersAddIsModeratorIndex do
   use Ecto.Migration
 
   def change do
-    create index(:users, ["(info->'is_moderator')"], name: :users_is_moderator_index, using: :gin)
+    create_if_not_exists index(:users, ["(info->'is_moderator')"], name: :users_is_moderator_index, using: :gin)
   end
 end
index 0cc7afa5404d6e710bc337ae9ed10181fb039ff8..36bdf322aa68e2a791890399016c328dbda4e2a5 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreatePushSubscriptions do
   use Ecto.Migration
 
   def change do
-    create table("push_subscriptions") do
+    create_if_not_exists table("push_subscriptions") do
       add :user_id, references("users", on_delete: :delete_all)
       add :token_id, references("oauth_tokens", on_delete: :delete_all)
       add :endpoint, :string
@@ -13,6 +13,6 @@ defmodule Pleroma.Repo.Migrations.CreatePushSubscriptions do
       timestamps()
     end
 
-    create index("push_subscriptions", [:user_id, :token_id], unique: true)
+    create_if_not_exists index("push_subscriptions", [:user_id, :token_id], unique: true)
   end
 end
index 2509e558daccad3dab7e84443af441a67ffa68cc..99fcb957c796537328354fd7578aba3ac1f25a3a 100644 (file)
@@ -1,7 +1,9 @@
 defmodule Pleroma.Repo.Migrations.AddUUIDExtension do
   use Ecto.Migration
 
-  def change do
+  def up do
     execute("create extension if not exists \"uuid-ossp\"")
   end
+
+  def down, do: :ok
 end
index 9571a1e4ddb45765d95ee1a5455e3a37e328c7ef..964383668054bb595eab5b296523275e6e9c7c0e 100644 (file)
@@ -1,7 +1,9 @@
 defmodule Pleroma.Repo.Migrations.AddUUIDsToUserInfo do
   use Ecto.Migration
 
-  def change do
+  def up do
     execute("update users set info = jsonb_set(info, '{\"id\"}', to_jsonb(uuid_generate_v4()))")
   end
+
+  def down, do: :ok
 end
index 1502f63b6b62e1aa674ea887f673b06d9ab02add..7d42a0fba47b900e39c15f852fa4875076fd67ae 100644 (file)
@@ -6,6 +6,6 @@ defmodule Pleroma.Repo.Migrations.AddTagsToUsers do
       add :tags, {:array, :string}
     end
 
-    create index(:users, [:tags], using: :gin)
+    create_if_not_exists index(:users, [:tags], using: :gin)
   end
 end
index 47d2d02da29e1982a8d93980a5f7ab25c6e41877..a5b4c543da9625f6dc5b2a09c3b6b6f3338bfbeb 100644 (file)
@@ -12,7 +12,7 @@ defmodule Pleroma.Repo.Migrations.UsersAndActivitiesFlakeId do
   #   4- update relation pkeys with the new ids
   #   5- rename the temporary column to id
   #   6- re-create the constraints
-  def change do
+  def up do
     # Old serial int ids are transformed to 128bits with extra padding.
     # The application (in `Pleroma.FlakeId`) handles theses IDs properly as integers; to keep compatibility
     # with previously issued ids.
@@ -75,6 +75,8 @@ defmodule Pleroma.Repo.Migrations.UsersAndActivitiesFlakeId do
     stop_clippy_heartbeats(clippy)
   end
 
+  def down, do: :ok
+
   defp start_clippy_heartbeats() do
     count = from(a in "activities", select: count(a.id)) |> Repo.one!
 
index 3aadabcd7ff0edf853ca185c8d5edfa396c78dd0..b6a4e752b069962f16d0955b21917ea551dae0af 100644 (file)
@@ -37,12 +37,12 @@ defmodule Pleroma.Repo.Migrations.AddVisibilityFunction do
   end
 
   def down do
-    drop(
+    drop_if_exists(
       index(:activities, ["activity_visibility(actor, recipients, data)"],
         name: :activities_visibility_index
       )
     )
 
-    execute("drop function activity_visibility(actor varchar, recipients varchar[], data jsonb)")
+    execute("drop function if exists activity_visibility(actor varchar, recipients varchar[], data jsonb)")
   end
 end
index 499d6711388ebff94159d96006ab04a34e5a0dd9..cff9753186842253024a70b70593cbb995c86e8b 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateUserFtsIndex do
   use Ecto.Migration
 
   def change do
-    create index(
+    create_if_not_exists index(
              :users,
              [
                """
index b4e8c984ce80a8e3a2da2ca30b90717f1f716bc6..b0d272802dba2beecea8b96366f19469a9025f59 100644 (file)
@@ -4,7 +4,7 @@ defmodule Pleroma.Repo.Migrations.FixUserTrigramIndex do
   def up do
     drop_if_exists(index(:users, [], name: :users_trigram_index))
 
-    create(
+    create_if_not_exists(
       index(:users, ["(trim(nickname || ' ' || coalesce(name, ''))) gist_trgm_ops"],
         name: :users_trigram_index,
         using: :gist
@@ -15,7 +15,7 @@ defmodule Pleroma.Repo.Migrations.FixUserTrigramIndex do
   def down do
     drop_if_exists(index(:users, [], name: :users_trigram_index))
 
-    create(
+    create_if_not_exists(
       index(:users, ["(nickname || name) gist_trgm_ops"], name: :users_trigram_index, using: :gist)
     )
   end
index ba6ff78b5e1b8dbf0ac428916e6778eeca3b0cd8..25f248c595bd71de1a8580891c1f5c02f51d26bd 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.UsersAddIsAdminIndex do
   use Ecto.Migration
 
   def change do
-    create(index(:users, ["(info->'is_admin')"], name: :users_is_admin_index, using: :gin))
+    create_if_not_exists(index(:users, ["(info->'is_admin')"], name: :users_is_admin_index, using: :gin))
   end
 end
index 3d23b343e305754a9b31850c4f55864a892a0d33..a9b356bc35628b92c3bf1802accfb79eab0410b8 100644 (file)
@@ -2,14 +2,14 @@ defmodule Pleroma.Repo.Migrations.CreateInstances do
   use Ecto.Migration
 
   def change do
-    create table(:instances) do
+    create_if_not_exists table(:instances) do
       add :host, :string
       add :unreachable_since, :naive_datetime_usec
 
       timestamps()
     end
 
-    create unique_index(:instances, [:host])
-    create index(:instances, [:unreachable_since])
+    create_if_not_exists unique_index(:instances, [:host])
+    create_if_not_exists index(:instances, [:unreachable_since])
   end
 end
index 2b4c2b5a9e3b5a4dda3ca1e863bbb6d522cb21fe..5b263b3b3a93dc5f786dd9c1dc4430ad14b733ac 100644 (file)
@@ -1,9 +1,11 @@
 defmodule Pleroma.Repo.Migrations.FixInfoIds do
   use Ecto.Migration
 
-  def change do
+  def up do
     execute(
       "update users set info = jsonb_set(info, '{id}', to_jsonb(uuid_generate_v4())) where info->'id' is null;"
     )
   end
+
+  def down, do: :ok
 end
index 337fed156c13ef97c0f958d0810e1e4d5c38f6fb..8e1c0e630b4cdc034accf6d0cc1a81da5c181988 100644 (file)
@@ -1,9 +1,15 @@
 defmodule Pleroma.Repo.Migrations.ChangePushSubscriptionsVarchar do
   use Ecto.Migration
 
-  def change do
+  def up do
     alter table(:push_subscriptions) do
       modify(:endpoint, :varchar)
     end
   end
+
+  def down do
+    alter table(:push_subscriptions) do
+      modify(:endpoint, :string)
+    end
+  end
 end
index 558732cd2324a93d5ce66e7784bb43bc99f0df41..1facb37b8af6366b8c7ae9c31b068391beb2c49e 100644 (file)
@@ -19,7 +19,7 @@ defmodule Pleroma.Repo.Migrations.AddCorrectDMIndex do
   end
 
   def down do
-    drop(
+    drop_if_exists(
       index(:activities, ["activity_visibility(actor, recipients, data)", "id DESC"],
         name: :activities_visibility_index,
         concurrently: true,
index 8e9eccbae8b5592ecad540e7c0ea904e9ee465f5..7e44db1214ab8ebefb4cadbed85fb4d68f2fa472 100644 (file)
@@ -2,11 +2,11 @@ defmodule Pleroma.Repo.Migrations.CreateThreadMutes do
   use Ecto.Migration
 
   def change do
-    create table(:thread_mutes) do
+    create_if_not_exists table(:thread_mutes) do
       add :user_id, references(:users, type: :uuid, on_delete: :delete_all)
       add :context, :string
     end
     
-    create unique_index(:thread_mutes, [:user_id, :context], name: :unique_index)
+    create_if_not_exists unique_index(:thread_mutes, [:user_id, :context], name: :unique_index)
   end
 end
index 6b28cbdd32d4de695857de9987b6501074bc4e15..34a390a937efc1f9e34f9b03d35f2a7f5578fa17 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateRegistrations do
   use Ecto.Migration
 
   def change do
-    create table(:registrations, primary_key: false) do
+    create_if_not_exists table(:registrations, primary_key: false) do
       add :id, :uuid, primary_key: true
       add :user_id, references(:users, type: :uuid, on_delete: :delete_all)
       add :provider, :string
@@ -12,7 +12,7 @@ defmodule Pleroma.Repo.Migrations.CreateRegistrations do
       timestamps()
     end
 
-    create unique_index(:registrations, [:provider, :uid])
-    create unique_index(:registrations, [:user_id, :provider, :uid])
+    create_if_not_exists unique_index(:registrations, [:provider, :uid])
+    create_if_not_exists unique_index(:registrations, [:user_id, :provider, :uid])
   end
 end
index a6ab38d02a1d3564c0078aa01cdab9fa92d9e4d8..01cb30559e2a517fc135df8c17bf21231c26c522 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.CreateNotificationIdIndex do
   use Ecto.Migration
 
   def change do
-  create index(:notifications, ["id desc nulls last"])
+    create_if_not_exists index(:notifications, ["id desc nulls last"])
   end
 end
index dd737e25ab9553e48da39fc355ba459137ff1db0..8a01bbdb133250bd460cae5d202cb5d346dfc622 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.CreateScheduledActivities do
   use Ecto.Migration
 
   def change do
-    create table(:scheduled_activities) do
+    create_if_not_exists table(:scheduled_activities) do
       add(:user_id, references(:users, type: :uuid, on_delete: :delete_all))
       add(:scheduled_at, :naive_datetime, null: false)
       add(:params, :map, null: false)
@@ -10,7 +10,7 @@ defmodule Pleroma.Repo.Migrations.CreateScheduledActivities do
       timestamps()
     end
 
-    create(index(:scheduled_activities, [:scheduled_at]))
-    create(index(:scheduled_activities, [:user_id]))
+    create_if_not_exists(index(:scheduled_activities, [:scheduled_at]))
+    create_if_not_exists(index(:scheduled_activities, [:user_id]))
   end
 end
index ebcd293893b830ceb838b13bf2f5836aba14833b..ab1bf2165e374d776f80189703e345c513947503 100644 (file)
@@ -2,8 +2,8 @@ defmodule Pleroma.Repo.Migrations.AddOauthTokenIndexes do
   use Ecto.Migration
 
   def change do
-    create(unique_index(:oauth_tokens, [:token]))
-    create(index(:oauth_tokens, [:app_id]))
-    create(index(:oauth_tokens, [:user_id]))
+    create_if_not_exists(unique_index(:oauth_tokens, [:token]))
+    create_if_not_exists(index(:oauth_tokens, [:app_id]))
+    create_if_not_exists(index(:oauth_tokens, [:user_id]))
   end
 end
index 232f75c92d8defb3412bdae1b8f201d8f91d558c..460dafb1b6dd71811667c426c85d4d207d916fb0 100644 (file)
@@ -1,6 +1,6 @@
 defmodule Pleroma.Repo.Migrations.AddIndexOnSubscribers do
   use Ecto.Migration
-  
+
   @disable_ddl_transaction true
   def change do
     create index(:users, ["(info->'subscribers')"], name: :users_subscribers_index, using: :gin, concurrently: true)
index 0e0af30ae80bc1ae30e6557e17b0d6748ad538c5..7b7d89da707fe76c0e7f4759fd7a53f255afdaad 100644 (file)
@@ -6,12 +6,12 @@ defmodule Pleroma.Repo.Migrations.CreateConversations do
   use Ecto.Migration
 
   def change do
-    create table(:conversations) do
+    create_if_not_exists table(:conversations) do
       add(:ap_id, :string, null: false)
       timestamps()
     end
 
-    create table(:conversation_participations) do
+    create_if_not_exists table(:conversation_participations) do
       add(:user_id, references(:users, type: :uuid, on_delete: :delete_all))
       add(:conversation_id, references(:conversations, on_delete: :delete_all))
       add(:read, :boolean, default: false)
@@ -19,8 +19,8 @@ defmodule Pleroma.Repo.Migrations.CreateConversations do
       timestamps()
     end
 
-    create index(:conversation_participations, [:conversation_id])
-    create unique_index(:conversation_participations, [:user_id, :conversation_id])
-    create unique_index(:conversations, [:ap_id])
+    create_if_not_exists index(:conversation_participations, [:conversation_id])
+    create_if_not_exists unique_index(:conversation_participations, [:user_id, :conversation_id])
+    create_if_not_exists unique_index(:conversations, [:ap_id])
   end
 end
index 1ce688c52348cf16886414c45799952c661049f6..b5ca2fc0fe4de405fca60d6f567e84e0939ef20b 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddParticipationUpdatedAtIndex do
   use Ecto.Migration
 
   def change do
-    create index(:conversation_participations, ["updated_at desc"])
+    create_if_not_exists index(:conversation_participations, ["updated_at desc"])
   end
 end
index d701dceccf16f4c0eab5086234dcfd6c6baf72f7..c19427f12b788694d24bb6e90d24b29fd1451a63 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddIndexOnUserInfoDeactivated do
   use Ecto.Migration
 
   def change do
-    create(index(:users, ["(info->'deactivated')"], name: :users_deactivated_index, using: :gin))
+    create_if_not_exists(index(:users, ["(info->'deactivated')"], name: :users_deactivated_index, using: :gin))
   end
 end
index 38b1081589a949fdaf09e4e91ff1ee2b2edd8120..cfd025fc5008be42a08a47d0a339c6ace82c80b8 100644 (file)
@@ -2,13 +2,13 @@ defmodule Pleroma.Repo.Migrations.CreateBookmarks do
   use Ecto.Migration
 
   def change do
-    create table(:bookmarks) do
+    create_if_not_exists table(:bookmarks) do
       add(:user_id, references(:users, type: :uuid, on_delete: :delete_all))
       add(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all))
 
       timestamps()
     end
 
-    create(unique_index(:bookmarks, [:user_id, :activity_id]))
+    create_if_not_exists(unique_index(:bookmarks, [:user_id, :activity_id]))
   end
 end
index 134b7c6f769285e08d0dd724e0b87e003a0b2042..ce45909541b6b0e35c9824ef9418d0a78776d966 100644 (file)
@@ -6,7 +6,7 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do
   alias Pleroma.User
   alias Pleroma.Repo
 
-  def change do
+  def up do
     query =
       from(u in User,
         where: u.local == true,
@@ -18,7 +18,7 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do
     |> Enum.each(fn %{id: user_id, bookmarks: bookmarks} ->
       Enum.each(bookmarks, fn ap_id ->
         activity = Activity.get_create_by_object_ap_id(ap_id)
-       unless is_nil(activity), do: {:ok, _} = Bookmark.create(user_id, activity.id)
+             unless is_nil(activity), do: {:ok, _} = Bookmark.create(user_id, activity.id)
       end)
     end)
 
@@ -26,4 +26,10 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do
       remove(:bookmarks)
     end
   end
+
+  def down do
+    alter table(:users) do
+      add :bookmarks, {:array, :string}, null: false, default: []
+    end
+  end
 end
index 9b274695eb89281db6d04852efc4e8cbc2eaeb74..d4de51691f569d05afb0dc53545bd8dd65ccdfdd 100644 (file)
@@ -3,6 +3,6 @@ defmodule Pleroma.Repo.Migrations.AddFTSIndexToObjects do
 
   def change do
     drop_if_exists index(:activities, ["(to_tsvector('english', data->'object'->>'content'))"], using: :gin, name: :activities_fts)
-    create index(:objects, ["(to_tsvector('english', data->>'content'))"], using: :gin, name: :objects_fts)
+    create_if_not_exists index(:objects, ["(to_tsvector('english', data->>'content'))"], using: :gin, name: :objects_fts)
   end
 end
index 449f2a3d46f3daa6abc4b71d123ab68c26177b43..44a2669853cafa0f3508cceb4444e36eef3da6c7 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddRefreshTokenIndexToToken do
   use Ecto.Migration
 
   def change do
-    create(unique_index(:oauth_tokens, [:refresh_token]))
+    create_if_not_exists(unique_index(:oauth_tokens, [:refresh_token]))
   end
 end
index 2ffb88cc93b93f0e2dbd9066769fe04b7891c9c2..246b70cfbd3de6657d1369c5bec6c02504cb33fd 100644 (file)
@@ -1,9 +1,15 @@
 defmodule Pleroma.Repo.Migrations.ChangeHideColumnInFilterTable do
   use Ecto.Migration
 
-  def change do
+  def up do
     alter table(:filters) do
       modify :hide, :boolean, default: false
     end
   end
+
+  def down do
+    alter table(:filters) do
+      modify :hide, :boolean
+    end
+  end
 end
index dc9abc9989a46dbbdd2d5d399d33192e1d34628d..5184c0c48386ce4288ae7e7241edef7807333a60 100644 (file)
@@ -68,6 +68,6 @@ defmodule Pleroma.Repo.Migrations.AddThreadVisibilityFunction do
   end
 
   def down do
-    execute("drop function thread_visibility(actor varchar, activity_id varchar)")
+    execute("drop function if exists thread_visibility(actor varchar, activity_id varchar)")
   end
 end
index 1e4e3c6892a5adcc139c9dd05f9d553e3b97aee0..cb65f3939c20d115883f4aaac83f06176869767b 100644 (file)
@@ -2,12 +2,12 @@ defmodule Pleroma.Repo.Migrations.CreateConfig do
   use Ecto.Migration
 
   def change do
-    create table(:config) do
+    create_if_not_exists table(:config) do
       add(:key, :string)
       add(:value, :binary)
       timestamps()
     end
 
-    create(unique_index(:config, :key))
+    create_if_not_exists(unique_index(:config, :key))
   end
 end
index a88b0ea613d06680a52bed0bba0eedc225f25493..505f0acb2c25cab2c306c867805dca3fcf4f93c6 100644 (file)
@@ -1,10 +1,12 @@
 defmodule Pleroma.Repo.Migrations.AddNonFollowsAndNonFollowersFieldsToNotificationSettings do
   use Ecto.Migration
 
-  def change do
+  def up do
     execute("""
     update users set info = jsonb_set(info, '{notification_settings}', '{"local": true, "remote": true, "follows": true, "followers": true, "non_follows": true, "non_followers": true}')
     where local=true
     """)
   end
+
+  def down, do: :ok
 end
index 89daa97058ac1ef58978cbca59efd2a52f8217b9..7e6643497ae53e7ec79d11066d2487ec33774516 100644 (file)
@@ -2,6 +2,6 @@ defmodule Pleroma.Repo.Migrations.AddIndexOnActivitiesLocal do
   use Ecto.Migration
 
   def change do
-    create(index("activities", [:local]))
+    create_if_not_exists(index("activities", [:local]))
   end
 end
index c915a021304d908ce0cbce2f38a8d80904ad5740..93d57a2494f0543b86c9de94480d9c3e6a7fd406 100644 (file)
@@ -3,6 +3,6 @@ defmodule Pleroma.Repo.Migrations.AddTagIndexToObjects do
 
   def change do
     drop_if_exists index(:activities, ["(data #> '{\"object\",\"tag\"}')"], using: :gin, name: :activities_tags)
-    create index(:objects, ["(data->'tag')"], using: :gin, name: :objects_tags)
+    create_if_not_exists index(:objects, ["(data->'tag')"], using: :gin, name: :objects_tags)
   end
 end
index d7a3785d09f7c3859f0d3d4a1db19e7b28c97023..867dafaf3825e411691f21d840c15fcb28117c50 100644 (file)
@@ -6,7 +6,7 @@ defmodule Pleroma.Repo.Migrations.AddGroupKeyToConfig do
       add(:group, :string)
     end
 
-    drop(unique_index("config", :key))
-    create(unique_index("config", [:group, :key]))
+    drop_if_exists(unique_index("config", :key))
+    create_if_not_exists(unique_index("config", [:group, :key]))
   end
 end
index b6a24441ad82ebdfcb32ec8b0d64469dfd53f9b9..6227769dccc8081cce8a343109c3b9cce235dbd3 100644 (file)
@@ -14,7 +14,7 @@ defmodule Pleroma.Repo.Migrations.AddFtsIndexToObjectsTwo do
       return new;
     end
     $$ LANGUAGE plpgsql")
-    execute("create index objects_fts on objects using RUM (fts_content rum_tsvector_addon_ops, inserted_at) with (attach = 'inserted_at', to = 'fts_content');")
+    execute("create index if not exists objects_fts on objects using RUM (fts_content rum_tsvector_addon_ops, inserted_at) with (attach = 'inserted_at', to = 'fts_content');")
 
     execute("CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON objects
     FOR EACH ROW EXECUTE PROCEDURE objects_fts_update()")
@@ -23,12 +23,12 @@ defmodule Pleroma.Repo.Migrations.AddFtsIndexToObjectsTwo do
   end
 
   def down do
-    execute "drop index objects_fts"
-    execute "drop trigger tsvectorupdate on objects"
-    execute "drop function objects_fts_update()"
+    execute "drop index if exists objects_fts"
+    execute "drop trigger if exists tsvectorupdate on objects"
+    execute "drop function if exists objects_fts_update()"
     alter table(:objects) do
       remove(:fts_content, :tsvector)
     end
-    create index(:objects, ["(to_tsvector('english', data->>'content'))"], using: :gin, name: :objects_fts)
+    create_if_not_exists index(:objects, ["(to_tsvector('english', data->>'content'))"], using: :gin, name: :objects_fts)
   end
 end