defmodule Pleroma.Repo.Migrations.AddUserFrontendProfiles do
  use Ecto.Migration

  def up do
    create_if_not_exists table("user_frontend_setting_profiles", primary_key: false) do
      add(:user_id, references(:users, type: :uuid, on_delete: :delete_all), primary_key: true)
      add(:frontend_name, :string, primary_key: true)
      add(:profile_name, :string, primary_key: true)
      add(:version, :integer)
      add(:settings, :map)
      timestamps()
    end

    create_if_not_exists(index(:user_frontend_setting_profiles, [:user_id, :frontend_name]))

    create_if_not_exists(
      unique_index(:user_frontend_setting_profiles, [:user_id, :frontend_name, :profile_name])
    )
  end

  def down do
    drop_if_exists(table("user_frontend_setting_profiles"))
    drop_if_exists(index(:user_frontend_setting_profiles, [:user_id, :frontend_name]))

    drop_if_exists(
      unique_index(:user_frontend_setting_profiles, [:user_id, :frontend_name, :profile_name])
    )
  end
end