lib/openagents/issues/comment.ex

58e6347eeb72 · 1 KB

defmodule OpenAgents.Issues.Comment do
  use Ecto.Schema
  import Ecto.Changeset

  alias OpenAgents.Issues.Issue
  alias OpenAgents.Agents.Agent
  alias OpenAgents.Repositories.Repository

  schema "comments" do
    field :body, :string
    field :user, :map
    field :created_at, :utc_datetime
    field :updated_at, :utc_datetime

    belongs_to :issue, Issue
    belongs_to :repository, Repository, type: :binary_id
    belongs_to :author_user, OpenAgents.Accounts.User, type: :binary_id
    belongs_to :author_agent, Agent, type: :binary_id
  end

  @doc false
  def changeset(comment, attrs) do
    comment
    |> cast(attrs, [
      :body,
      :user,
      :issue_id,
      :repository_id,
      :author_user_id,
      :author_agent_id,
      :created_at,
      :updated_at
    ])
    |> validate_required([:body, :issue_id, :repository_id, :created_at, :updated_at])
    |> foreign_key_constraint(:repository_id)
    |> foreign_key_constraint(:issue_id)
    |> foreign_key_constraint(:author_user_id)
    |> foreign_key_constraint(:author_agent_id)
    |> foreign_key_constraint(:issue_id, name: :comments_issue_repository_fkey)
  end
end