lib/openagents/conversations/conversation.ex

58e6347eeb72 · 870 B

defmodule OpenAgents.Conversations.Conversation do
  @moduledoc false

  use Ecto.Schema
  import Ecto.Changeset

  @primary_key {:id, :binary_id, autogenerate: true}
  @foreign_key_type :binary_id
  @timestamps_opts [type: :utc_datetime_usec]

  schema "conversations" do
    belongs_to :visitor, OpenAgents.Conversations.Visitor
    has_many :messages, OpenAgents.Conversations.Message
    has_many :turns, OpenAgents.Conversations.Turn
    timestamps()
  end

  @type t :: %__MODULE__{
          id: Ecto.UUID.t(),
          visitor_id: Ecto.UUID.t(),
          inserted_at: DateTime.t(),
          updated_at: DateTime.t()
        }

  def changeset(conversation, attributes) do
    conversation
    |> cast(attributes, [:visitor_id])
    |> validate_required([:visitor_id])
    |> foreign_key_constraint(:visitor_id)
    |> unique_constraint(:visitor_id)
  end
end