1.2 KiB · text 5af55d9
defmodule GitGud.Repo.Migrations.CreatePackages do
use Ecto.Migration
def change do
create table(:packages) do
add :repository_id, references(:repositories, on_delete: :delete_all), null: false
# container | npm | maven | generic — for now, just "container"
add :kind, :string, null: false, default: "container"
add :name, :string, null: false, size: 200
add :latest_version, :string
timestamps(type: :utc_datetime)
end
create unique_index(:packages, [:repository_id, :kind, :name])
create index(:packages, [:kind, :name])
create table(:package_versions) do
add :package_id, references(:packages, on_delete: :delete_all), null: false
add :version, :string, null: false
# OCI manifest digest (sha256:...) or equivalent
add :digest, :string, null: false
add :size, :bigint, default: 0
add :media_type, :string
# cached subset of the OCI manifest for UI rendering
add :manifest_doc, :map
add :pushed_at, :utc_datetime
add :pusher_id, references(:users, on_delete: :nilify_all)
timestamps(type: :utc_datetime)
end
create unique_index(:package_versions, [:package_id, :version])
create index(:package_versions, [:digest])
end
end