lib/openagents/milestones/milestone.ex

main at 58e6347eeb72 · 853 B

defmodule OpenAgents.Milestones.Milestone do
  use Ecto.Schema
  import Ecto.Changeset

  alias OpenAgents.Repositories.Repository

  schema "milestones" do
    field :title, :string
    field :state, :string, default: "open"
    field :description, :string
    field :due_on, :string
    field :number, :integer
    field :open_issues, :integer, virtual: true, default: 0
    field :closed_issues, :integer, virtual: true, default: 0
    belongs_to :repository, Repository, type: :binary_id

    timestamps(type: :utc_datetime)
  end

  @doc false
  def changeset(milestone, attrs) do
    milestone
    |> cast(attrs, [:title, :state, :description, :due_on, :number, :repository_id])
    |> validate_required([:title, :number, :repository_id])
    |> unique_constraint([:repository_id, :number])
    |> foreign_key_constraint(:repository_id)
  end
end