defmodule GitGud.Repo.Migrations.CreateWebhooks do
use Ecto.Migration
def change do
create table(:webhooks) do
add :repository_id, references(:repositories, on_delete: :delete_all), null: false
add :url, :string, null: false, size: 500
add :secret, :binary, null: false
add :content_type, :string, null: false, default: "application/json"
# Events the hook subscribes to. nil/[] = all.
add :events, {:array, :string}, null: false, default: []
add :enabled, :boolean, null: false, default: true
add :insecure_ssl, :boolean, null: false, default: false
timestamps(type: :utc_datetime)
end
create index(:webhooks, [:repository_id])
create table(:webhook_deliveries) do
add :webhook_id, references(:webhooks, on_delete: :delete_all), null: false
add :event, :string, null: false
# pending | success | failure
add :status, :string, null: false, default: "pending"
add :status_code, :integer
add :request_body, :text
add :response_body, :text
add :duration_ms, :integer
add :attempts, :integer, null: false, default: 0
add :delivered_at, :utc_datetime
timestamps(type: :utc_datetime)
end
create index(:webhook_deliveries, [:webhook_id, :inserted_at])
end
end
1.3 KiB · text
5af55d9