diff options
| author | Maxim Filippov <colixer@gmail.com> | 2019-10-27 16:11:25 +0300 | 
|---|---|---|
| committer | Maxim Filippov <colixer@gmail.com> | 2019-10-27 16:11:25 +0300 | 
| commit | 791bcfd90f41da9d77ab5a5ad6eec22ae8050b8a (patch) | |
| tree | 98ebe750f99cb6be2532e9dbaf3b334957353777 /priv/repo/migrations | |
| parent | 8eff05d4c62c4d3300fee173cad84f75a0aafb4d (diff) | |
| parent | 060adfd762a5183b3cc5f51e041819b24b8430d2 (diff) | |
| download | pleroma-791bcfd90f41da9d77ab5a5ad6eec22ae8050b8a.tar.gz pleroma-791bcfd90f41da9d77ab5a5ad6eec22ae8050b8a.zip  | |
Merge branch 'develop' into feature/store-statuses-data-inside-flag
Diffstat (limited to 'priv/repo/migrations')
30 files changed, 675 insertions, 3 deletions
diff --git a/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs b/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs index 779aa382e..a5170d521 100644 --- a/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs +++ b/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs @@ -5,7 +5,11 @@ defmodule Pleroma.Repo.Migrations.AddFollowingAddressFromSourceData do    def change do      query = -      User.external_users_query() +      User.Query.build(%{ +        external: true, +        legacy_active: true, +        order_by: :id +      })        |> select([u], struct(u, [:id, :ap_id, :info]))      Pleroma.Repo.stream(query) diff --git a/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs b/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs new file mode 100644 index 000000000..2f336a5e8 --- /dev/null +++ b/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs @@ -0,0 +1,22 @@ +defmodule Pleroma.Repo.Migrations.CreateSafeJsonbSet do +  use Ecto.Migration +  alias Pleroma.User + +  def change do +    execute(""" +    create or replace function safe_jsonb_set(target jsonb, path text[], new_value jsonb, create_missing boolean default true) returns jsonb as $$ +    declare +      result jsonb; +    begin +      result := jsonb_set(target, path, coalesce(new_value, 'null'::jsonb), create_missing); +      if result is NULL then +        raise 'jsonb_set tried to wipe the object, please report this incindent to Pleroma bug tracker. https://git.pleroma.social/pleroma/pleroma/issues/new'; +        return target; +      else +        return result; +      end if; +    end; +    $$ language plpgsql; +    """) +  end +end diff --git a/priv/repo/migrations/20190711042024_copy_muted_to_muted_notifications.exs b/priv/repo/migrations/20190711042024_copy_muted_to_muted_notifications.exs index bc4e828cc..fc9bf70ba 100644 --- a/priv/repo/migrations/20190711042024_copy_muted_to_muted_notifications.exs +++ b/priv/repo/migrations/20190711042024_copy_muted_to_muted_notifications.exs @@ -1,10 +1,9 @@  defmodule Pleroma.Repo.Migrations.CopyMutedToMutedNotifications do    use Ecto.Migration -  alias Pleroma.User    def change do      execute( -      "update users set info = jsonb_set(info, '{muted_notifications}', info->'mutes', true) where local = true" +      "update users set info = safe_jsonb_set(info, '{muted_notifications}', info->'mutes', true) where local = true"      )    end  end diff --git a/priv/repo/migrations/20191009154606_add_user_info_columns.exs b/priv/repo/migrations/20191009154606_add_user_info_columns.exs new file mode 100644 index 000000000..22a5a377f --- /dev/null +++ b/priv/repo/migrations/20191009154606_add_user_info_columns.exs @@ -0,0 +1,53 @@ +defmodule Pleroma.Repo.Migrations.AddUsersInfoColumns do +  use Ecto.Migration + +  @jsonb_array_default "'[]'::jsonb" + +  def change do +    alter table(:users) do +      add_if_not_exists(:banner, :map, default: %{}) +      add_if_not_exists(:background, :map, default: %{}) +      add_if_not_exists(:source_data, :map, default: %{}) +      add_if_not_exists(:note_count, :integer, default: 0) +      add_if_not_exists(:follower_count, :integer, default: 0) +      add_if_not_exists(:following_count, :integer, default: nil) +      add_if_not_exists(:locked, :boolean, default: false, null: false) +      add_if_not_exists(:confirmation_pending, :boolean, default: false, null: false) +      add_if_not_exists(:password_reset_pending, :boolean, default: false, null: false) +      add_if_not_exists(:confirmation_token, :text, default: nil) +      add_if_not_exists(:default_scope, :string, default: "public") +      add_if_not_exists(:blocks, {:array, :text}, default: []) +      add_if_not_exists(:domain_blocks, {:array, :text}, default: []) +      add_if_not_exists(:mutes, {:array, :text}, default: []) +      add_if_not_exists(:muted_reblogs, {:array, :text}, default: []) +      add_if_not_exists(:muted_notifications, {:array, :text}, default: []) +      add_if_not_exists(:subscribers, {:array, :text}, default: []) +      add_if_not_exists(:deactivated, :boolean, default: false, null: false) +      add_if_not_exists(:no_rich_text, :boolean, default: false, null: false) +      add_if_not_exists(:ap_enabled, :boolean, default: false, null: false) +      add_if_not_exists(:is_moderator, :boolean, default: false, null: false) +      add_if_not_exists(:is_admin, :boolean, default: false, null: false) +      add_if_not_exists(:show_role, :boolean, default: true, null: false) +      add_if_not_exists(:settings, :map, default: nil) +      add_if_not_exists(:magic_key, :text, default: nil) +      add_if_not_exists(:uri, :text, default: nil) +      add_if_not_exists(:hide_followers_count, :boolean, default: false, null: false) +      add_if_not_exists(:hide_follows_count, :boolean, default: false, null: false) +      add_if_not_exists(:hide_followers, :boolean, default: false, null: false) +      add_if_not_exists(:hide_follows, :boolean, default: false, null: false) +      add_if_not_exists(:hide_favorites, :boolean, default: true, null: false) +      add_if_not_exists(:unread_conversation_count, :integer, default: 0) +      add_if_not_exists(:pinned_activities, {:array, :text}, default: []) +      add_if_not_exists(:email_notifications, :map, default: %{"digest" => false}) +      add_if_not_exists(:mascot, :map, default: nil) +      add_if_not_exists(:emoji, :map, default: fragment(@jsonb_array_default)) +      add_if_not_exists(:pleroma_settings_store, :map, default: %{}) +      add_if_not_exists(:fields, :map, default: fragment(@jsonb_array_default)) +      add_if_not_exists(:raw_fields, :map, default: fragment(@jsonb_array_default)) +      add_if_not_exists(:discoverable, :boolean, default: false, null: false) +      add_if_not_exists(:invisible, :boolean, default: false, null: false) +      add_if_not_exists(:notification_settings, :map, default: %{}) +      add_if_not_exists(:skip_thread_containment, :boolean, default: false, null: false) +    end +  end +end diff --git a/priv/repo/migrations/20191009154608_copy_users_info_fields_to_users.exs b/priv/repo/migrations/20191009154608_copy_users_info_fields_to_users.exs new file mode 100644 index 000000000..cc5ae6920 --- /dev/null +++ b/priv/repo/migrations/20191009154608_copy_users_info_fields_to_users.exs @@ -0,0 +1,145 @@ +defmodule Pleroma.Repo.Migrations.CopyUsersInfoFieldsToUsers do +  use Ecto.Migration + +  @jsonb_array_default "'[]'::jsonb" + +  @info_fields [ +    :banner, +    :background, +    :source_data, +    :note_count, +    :follower_count, +    :following_count, +    :locked, +    :confirmation_pending, +    :password_reset_pending, +    :confirmation_token, +    :default_scope, +    :blocks, +    :domain_blocks, +    :mutes, +    :muted_reblogs, +    :muted_notifications, +    :subscribers, +    :deactivated, +    :no_rich_text, +    :ap_enabled, +    :is_moderator, +    :is_admin, +    :show_role, +    :settings, +    :magic_key, +    :uri, +    :hide_followers_count, +    :hide_follows_count, +    :hide_followers, +    :hide_follows, +    :hide_favorites, +    :unread_conversation_count, +    :pinned_activities, +    :email_notifications, +    :mascot, +    :emoji, +    :pleroma_settings_store, +    :fields, +    :raw_fields, +    :discoverable, +    :invisible, +    :skip_thread_containment, +    :notification_settings +  ] + +  @jsonb_fields [ +    :banner, +    :background, +    :source_data, +    :settings, +    :email_notifications, +    :mascot, +    :pleroma_settings_store, +    :notification_settings +  ] + +  @array_jsonb_fields [:emoji, :fields, :raw_fields] + +  @int_fields [:note_count, :follower_count, :following_count, :unread_conversation_count] + +  @boolean_fields [ +    :locked, +    :confirmation_pending, +    :password_reset_pending, +    :deactivated, +    :no_rich_text, +    :ap_enabled, +    :is_moderator, +    :is_admin, +    :show_role, +    :hide_followers_count, +    :hide_follows_count, +    :hide_followers, +    :hide_follows, +    :hide_favorites, +    :discoverable, +    :invisible, +    :skip_thread_containment +  ] + +  @array_text_fields [ +    :blocks, +    :domain_blocks, +    :mutes, +    :muted_reblogs, +    :muted_notifications, +    :subscribers, +    :pinned_activities +  ] + +  def change do +    if direction() == :up do +      sets = +        for f <- @info_fields do +          set_field = "#{f} =" + +          # Coercion of null::jsonb to NULL +          jsonb = "case when info->>'#{f}' IS NULL then null else info->'#{f}' end" + +          cond do +            f in @jsonb_fields -> +              "#{set_field} #{jsonb}" + +            f in @array_jsonb_fields -> +              "#{set_field} coalesce(#{jsonb}, #{@jsonb_array_default})" + +            f in @int_fields -> +              "#{set_field} (info->>'#{f}')::int" + +            f in @boolean_fields -> +              "#{set_field} coalesce((info->>'#{f}')::boolean, false)" + +            f in @array_text_fields -> +              "#{set_field} ARRAY(SELECT jsonb_array_elements_text(#{jsonb}))" + +            true -> +              "#{set_field} info->>'#{f}'" +          end +        end +        |> Enum.join(", ") + +      execute("update users set " <> sets) + +      for index_name <- [ +            :users_deactivated_index, +            :users_is_moderator_index, +            :users_is_admin_index, +            :users_subscribers_index +          ] do +        drop_if_exists(index(:users, [], name: index_name)) +      end +    end + +    create_if_not_exists(index(:users, [:deactivated])) +    create_if_not_exists(index(:users, [:is_moderator])) +    create_if_not_exists(index(:users, [:is_admin])) +    create_if_not_exists(index(:users, [:subscribers])) +  end +end diff --git a/priv/repo/migrations/20191014181019_create_markers.exs b/priv/repo/migrations/20191014181019_create_markers.exs new file mode 100644 index 000000000..c717831ba --- /dev/null +++ b/priv/repo/migrations/20191014181019_create_markers.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.CreateMarkers do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:markers) do +      add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) +      add(:timeline, :string, default: "", null: false) +      add(:last_read_id, :string, default: "", null: false) +      add(:lock_version, :integer, default: 0, null: false) +      timestamps() +    end + +    create_if_not_exists(unique_index(:markers, [:user_id, :timeline])) +  end +end diff --git a/priv/repo/migrations/20191017225002_drop_websub_tables.exs b/priv/repo/migrations/20191017225002_drop_websub_tables.exs new file mode 100644 index 000000000..4cf67a59c --- /dev/null +++ b/priv/repo/migrations/20191017225002_drop_websub_tables.exs @@ -0,0 +1,10 @@ +defmodule Pleroma.Repo.Migrations.DropWebsubTables do +  use Ecto.Migration + +  def up do +    drop_if_exists(table(:websub_client_subscriptions)) +    drop_if_exists(table(:websub_server_subscriptions)) +  end + +  def down, do: :noop +end diff --git a/priv/repo/migrations/20191026190317_set_not_null_for_activities.exs b/priv/repo/migrations/20191026190317_set_not_null_for_activities.exs new file mode 100644 index 000000000..9b66f3cff --- /dev/null +++ b/priv/repo/migrations/20191026190317_set_not_null_for_activities.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForActivities do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE activities +    ALTER COLUMN data SET NOT NULL, +    ALTER COLUMN local SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE activities +    ALTER COLUMN data DROP NOT NULL, +    ALTER COLUMN local DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190415_set_not_null_for_activity_expirations.exs b/priv/repo/migrations/20191026190415_set_not_null_for_activity_expirations.exs new file mode 100644 index 000000000..e41c69e4c --- /dev/null +++ b/priv/repo/migrations/20191026190415_set_not_null_for_activity_expirations.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForActivityExpirations do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE activity_expirations +    ALTER COLUMN activity_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE activity_expirations +    ALTER COLUMN activity_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190500_set_not_null_for_apps.exs b/priv/repo/migrations/20191026190500_set_not_null_for_apps.exs new file mode 100644 index 000000000..a6a44ddfe --- /dev/null +++ b/priv/repo/migrations/20191026190500_set_not_null_for_apps.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForApps do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE apps +    ALTER COLUMN client_name SET NOT NULL, +    ALTER COLUMN redirect_uris SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE apps +    ALTER COLUMN client_name DROP NOT NULL, +    ALTER COLUMN redirect_uris DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190533_set_not_null_for_bookmarks.exs b/priv/repo/migrations/20191026190533_set_not_null_for_bookmarks.exs new file mode 100644 index 000000000..5f3224003 --- /dev/null +++ b/priv/repo/migrations/20191026190533_set_not_null_for_bookmarks.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForBookmarks do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE bookmarks +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN activity_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE bookmarks +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN activity_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190622_set_not_null_for_config.exs b/priv/repo/migrations/20191026190622_set_not_null_for_config.exs new file mode 100644 index 000000000..204272442 --- /dev/null +++ b/priv/repo/migrations/20191026190622_set_not_null_for_config.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForConfig do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE config +    ALTER COLUMN key SET NOT NULL, +    ALTER COLUMN value SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE config +    ALTER COLUMN key DROP NOT NULL, +    ALTER COLUMN value DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190712_set_not_null_for_conversation_participation_recipient_ships.exs b/priv/repo/migrations/20191026190712_set_not_null_for_conversation_participation_recipient_ships.exs new file mode 100644 index 000000000..a5ab1d3c9 --- /dev/null +++ b/priv/repo/migrations/20191026190712_set_not_null_for_conversation_participation_recipient_ships.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForConversationParticipationRecipientShips do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE conversation_participation_recipient_ships +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN participation_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE conversation_participation_recipient_ships +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN participation_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190759_set_not_null_for_conversation_participations.exs b/priv/repo/migrations/20191026190759_set_not_null_for_conversation_participations.exs new file mode 100644 index 000000000..cabb1f29f --- /dev/null +++ b/priv/repo/migrations/20191026190759_set_not_null_for_conversation_participations.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForConversationParticipations do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE conversation_participations +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN conversation_id SET NOT NULL, +    ALTER COLUMN read SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE conversation_participations +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN conversation_id DROP NOT NULL, +    ALTER COLUMN read DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026190841_set_not_null_for_filters.exs b/priv/repo/migrations/20191026190841_set_not_null_for_filters.exs new file mode 100644 index 000000000..52d7e687a --- /dev/null +++ b/priv/repo/migrations/20191026190841_set_not_null_for_filters.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForFilters do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE filters +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN filter_id SET NOT NULL, +    ALTER COLUMN whole_word SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE filters +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN filter_id DROP NOT NULL, +    ALTER COLUMN whole_word DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191023_set_not_null_for_instances.exs b/priv/repo/migrations/20191026191023_set_not_null_for_instances.exs new file mode 100644 index 000000000..4c2560da5 --- /dev/null +++ b/priv/repo/migrations/20191026191023_set_not_null_for_instances.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForInstances do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE instances +    ALTER COLUMN host SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE instances +    ALTER COLUMN host DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191100_set_not_null_for_lists.exs b/priv/repo/migrations/20191026191100_set_not_null_for_lists.exs new file mode 100644 index 000000000..40b8b136a --- /dev/null +++ b/priv/repo/migrations/20191026191100_set_not_null_for_lists.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForLists do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE lists +    ALTER COLUMN user_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE lists +    ALTER COLUMN user_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191134_set_not_null_for_markers.exs b/priv/repo/migrations/20191026191134_set_not_null_for_markers.exs new file mode 100644 index 000000000..7d7b73e7b --- /dev/null +++ b/priv/repo/migrations/20191026191134_set_not_null_for_markers.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForMarkers do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE markers +    ALTER COLUMN user_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE markers +    ALTER COLUMN user_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191218_set_not_null_for_moderation_log.exs b/priv/repo/migrations/20191026191218_set_not_null_for_moderation_log.exs new file mode 100644 index 000000000..7238ca7f5 --- /dev/null +++ b/priv/repo/migrations/20191026191218_set_not_null_for_moderation_log.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForModerationLog do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE moderation_log +    ALTER COLUMN data SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE moderation_log +    ALTER COLUMN data DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191249_set_not_null_for_notifications.exs b/priv/repo/migrations/20191026191249_set_not_null_for_notifications.exs new file mode 100644 index 000000000..7e2976bab --- /dev/null +++ b/priv/repo/migrations/20191026191249_set_not_null_for_notifications.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForNotifications do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE notifications +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN seen SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE notifications +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN seen DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191328_set_not_null_for_oauth_authorizations.exs b/priv/repo/migrations/20191026191328_set_not_null_for_oauth_authorizations.exs new file mode 100644 index 000000000..bc6b36e69 --- /dev/null +++ b/priv/repo/migrations/20191026191328_set_not_null_for_oauth_authorizations.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForOauthAuthorizations do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE oauth_authorizations +    ALTER COLUMN app_id SET NOT NULL, +    ALTER COLUMN token SET NOT NULL, +    ALTER COLUMN used SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE oauth_authorizations +    ALTER COLUMN app_id DROP NOT NULL, +    ALTER COLUMN token DROP NOT NULL, +    ALTER COLUMN used DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191401_set_not_null_for_oauth_tokens.exs b/priv/repo/migrations/20191026191401_set_not_null_for_oauth_tokens.exs new file mode 100644 index 000000000..fe67db8cc --- /dev/null +++ b/priv/repo/migrations/20191026191401_set_not_null_for_oauth_tokens.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForOauthTokens do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE oauth_tokens +    ALTER COLUMN app_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE oauth_tokens +    ALTER COLUMN app_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191442_set_not_null_for_objects.exs b/priv/repo/migrations/20191026191442_set_not_null_for_objects.exs new file mode 100644 index 000000000..59e89d6da --- /dev/null +++ b/priv/repo/migrations/20191026191442_set_not_null_for_objects.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForObjects do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE objects +    ALTER COLUMN data SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE objects +    ALTER COLUMN data DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191524_set_not_null_for_password_reset_tokens.exs b/priv/repo/migrations/20191026191524_set_not_null_for_password_reset_tokens.exs new file mode 100644 index 000000000..51efadbd3 --- /dev/null +++ b/priv/repo/migrations/20191026191524_set_not_null_for_password_reset_tokens.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForPasswordResetTokens do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE password_reset_tokens +    ALTER COLUMN token SET NOT NULL, +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN used SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE password_reset_tokens +    ALTER COLUMN token DROP NOT NULL, +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN used DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191603_set_not_null_for_push_subscriptions.exs b/priv/repo/migrations/20191026191603_set_not_null_for_push_subscriptions.exs new file mode 100644 index 000000000..0f3a73067 --- /dev/null +++ b/priv/repo/migrations/20191026191603_set_not_null_for_push_subscriptions.exs @@ -0,0 +1,25 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForPushSubscriptions do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE push_subscriptions +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN token_id SET NOT NULL, +    ALTER COLUMN endpoint SET NOT NULL, +    ALTER COLUMN key_p256dh SET NOT NULL, +    ALTER COLUMN key_auth SET NOT NULL, +    ALTER COLUMN data SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE push_subscriptions +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN token_id DROP NOT NULL, +    ALTER COLUMN endpoint DROP NOT NULL, +    ALTER COLUMN key_p256dh DROP NOT NULL, +    ALTER COLUMN key_auth DROP NOT NULL, +    ALTER COLUMN data DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191635_set_not_null_for_registrations.exs b/priv/repo/migrations/20191026191635_set_not_null_for_registrations.exs new file mode 100644 index 000000000..ddfbf4c5e --- /dev/null +++ b/priv/repo/migrations/20191026191635_set_not_null_for_registrations.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForRegistrations do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE registrations +    ALTER COLUMN provider SET NOT NULL, +    ALTER COLUMN uid SET NOT NULL, +    ALTER COLUMN info SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE registrations +    ALTER COLUMN provider DROP NOT NULL, +    ALTER COLUMN uid DROP NOT NULL, +    ALTER COLUMN info DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191711_set_not_null_for_scheduled_activities.exs b/priv/repo/migrations/20191026191711_set_not_null_for_scheduled_activities.exs new file mode 100644 index 000000000..f1830c8c3 --- /dev/null +++ b/priv/repo/migrations/20191026191711_set_not_null_for_scheduled_activities.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForScheduledActivities do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE scheduled_activities +    ALTER COLUMN user_id SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE scheduled_activities +    ALTER COLUMN user_id DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191753_set_not_null_for_thread_mutes.exs b/priv/repo/migrations/20191026191753_set_not_null_for_thread_mutes.exs new file mode 100644 index 000000000..daa7ce314 --- /dev/null +++ b/priv/repo/migrations/20191026191753_set_not_null_for_thread_mutes.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForThreadMutes do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE thread_mutes +    ALTER COLUMN user_id SET NOT NULL, +    ALTER COLUMN context SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE thread_mutes +    ALTER COLUMN user_id DROP NOT NULL, +    ALTER COLUMN context DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191826_set_not_null_for_user_invite_tokens.exs b/priv/repo/migrations/20191026191826_set_not_null_for_user_invite_tokens.exs new file mode 100644 index 000000000..836544f7f --- /dev/null +++ b/priv/repo/migrations/20191026191826_set_not_null_for_user_invite_tokens.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForUserInviteTokens do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    execute("ALTER TABLE user_invite_tokens +    ALTER COLUMN used SET NOT NULL, +    ALTER COLUMN uses SET NOT NULL, +    ALTER COLUMN invite_type SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE user_invite_tokens +    ALTER COLUMN used DROP NOT NULL, +    ALTER COLUMN uses DROP NOT NULL, +    ALTER COLUMN invite_type DROP NOT NULL") +  end +end diff --git a/priv/repo/migrations/20191026191910_set_not_null_for_users.exs b/priv/repo/migrations/20191026191910_set_not_null_for_users.exs new file mode 100644 index 000000000..f145a89ab --- /dev/null +++ b/priv/repo/migrations/20191026191910_set_not_null_for_users.exs @@ -0,0 +1,46 @@ +defmodule Pleroma.Repo.Migrations.SetNotNullForUsers do +  use Ecto.Migration + +  # modify/3 function will require index recreation, so using execute/1 instead + +  def up do +    # irreversible +    execute("UPDATE users SET follower_count = 0 WHERE follower_count IS NULL") + +    execute("ALTER TABLE users +    ALTER COLUMN following SET NOT NULL, +    ALTER COLUMN local SET NOT NULL, +    ALTER COLUMN source_data SET NOT NULL, +    ALTER COLUMN note_count SET NOT NULL, +    ALTER COLUMN follower_count SET NOT NULL, +    ALTER COLUMN blocks SET NOT NULL, +    ALTER COLUMN domain_blocks SET NOT NULL, +    ALTER COLUMN mutes SET NOT NULL, +    ALTER COLUMN muted_reblogs SET NOT NULL, +    ALTER COLUMN muted_notifications SET NOT NULL, +    ALTER COLUMN subscribers SET NOT NULL, +    ALTER COLUMN pinned_activities SET NOT NULL, +    ALTER COLUMN emoji SET NOT NULL, +    ALTER COLUMN fields SET NOT NULL, +    ALTER COLUMN raw_fields SET NOT NULL") +  end + +  def down do +    execute("ALTER TABLE users +    ALTER COLUMN following DROP NOT NULL, +    ALTER COLUMN local DROP NOT NULL, +    ALTER COLUMN source_data DROP NOT NULL, +    ALTER COLUMN note_count DROP NOT NULL, +    ALTER COLUMN follower_count DROP NOT NULL, +    ALTER COLUMN blocks DROP NOT NULL, +    ALTER COLUMN domain_blocks DROP NOT NULL, +    ALTER COLUMN mutes DROP NOT NULL, +    ALTER COLUMN muted_reblogs DROP NOT NULL, +    ALTER COLUMN muted_notifications DROP NOT NULL, +    ALTER COLUMN subscribers DROP NOT NULL, +    ALTER COLUMN pinned_activities DROP NOT NULL, +    ALTER COLUMN emoji DROP NOT NULL, +    ALTER COLUMN fields DROP NOT NULL, +    ALTER COLUMN raw_fields DROP NOT NULL") +  end +end  | 
