1.0 KiB · text 5af55d9
defmodule GitGud.BranchProtections.BranchProtection do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Repositories.Repository
schema "branch_protections" do
field :pattern, :string
field :required_approvals, :integer, default: 0
field :allow_force_push, :boolean, default: false
field :allow_deletions, :boolean, default: false
field :require_status_checks, :boolean, default: false
field :required_checks, {:array, :string}, default: []
belongs_to :repository, Repository
timestamps(type: :utc_datetime)
end
def changeset(p, attrs) do
p
|> cast(attrs, [
:pattern,
:required_approvals,
:allow_force_push,
:allow_deletions,
:require_status_checks,
:required_checks
])
|> validate_required([:pattern])
|> validate_length(:pattern, min: 1, max: 250)
|> validate_number(:required_approvals, greater_than_or_equal_to: 0, less_than: 50)
|> unique_constraint(:pattern, name: :branch_protections_repository_id_pattern_index)
end
end