tarakan/priv/repo/migrations/20260711002008_create_api_credentials.exs
Maxfield Luke af6077b9c3
All checks were successful
CI and deploy / Test (push) Successful in 4m52s
CI and deploy / Deploy production (push) Successful in 23s
Initial commit on Forgejo
Fresh repository history for elektrine/tarakan hosted at
https://git.elektrine.com/elektrine/tarakan.
2026-07-29 04:43:40 -04:00

29 lines
1.1 KiB
Elixir

defmodule Tarakan.Repo.Migrations.CreateApiCredentials do
use Ecto.Migration
def change do
create table(:api_credentials) do
add :account_id, references(:accounts, on_delete: :delete_all), null: false
add :repository_id, references(:repositories, on_delete: :delete_all)
add :name, :string, null: false
add :token_hash, :binary, null: false
add :token_prefix, :string, null: false
add :scopes, {:array, :string}, null: false, default: []
add :expires_at, :utc_datetime_usec, null: false
add :last_used_at, :utc_datetime_usec
add :revoked_at, :utc_datetime_usec
timestamps(type: :utc_datetime_usec)
end
create unique_index(:api_credentials, [:token_hash])
create index(:api_credentials, [:account_id, :revoked_at])
create index(:api_credentials, [:repository_id])
create index(:api_credentials, [:expires_at])
create constraint(:api_credentials, :api_credentials_scopes_must_be_valid,
check:
"scopes <@ ARRAY['tasks:read', 'tasks:claim', 'contributions:write', 'findings:submit']::varchar[]"
)
end
end