defmodule GitGud.Repo.Migrations.CreateLabels do
use Ecto.Migration
def change do
create table(:labels) do
add :repository_id, references(:repositories, on_delete: :delete_all), null: false
add :name, :string, null: false, size: 80
add :color, :string, null: false, size: 7
add :description, :string, size: 255
timestamps(type: :utc_datetime)
end
create unique_index(:labels, [:repository_id, :name])
# Polymorphic join: one row per (label, target).
# target_type ∈ {"issue", "pull_request"} for now.
create table(:labelings) do
add :label_id, references(:labels, on_delete: :delete_all), null: false
add :target_type, :string, null: false
add :target_id, :integer, null: false
timestamps(type: :utc_datetime, updated_at: false)
end
create unique_index(:labelings, [:label_id, :target_type, :target_id])
create index(:labelings, [:target_type, :target_id])
end
end
969 B · text
5af55d9