lib/ex_dav/storage/postgres/schemas/object.ex

defmodule ExDav.Storage.Postgres.Schemas.Object do
  @moduledoc "A single calendar resource (an event, todo, etc.)."
  use Ecto.Schema
  import Ecto.Changeset

  alias ExDav.Storage.Postgres.Schemas.Calendar

  schema "calendar_objects" do
    field :name, :string
    field :uid, :string
    field :component, :string
    field :ical, :string
    field :etag, :string
    field :version, :integer, default: 0

    belongs_to :calendar, Calendar

    timestamps(type: :utc_datetime)
  end

  def changeset(object, attrs) do
    object
    |> cast(attrs, [:name, :uid, :component, :ical, :etag, :version, :calendar_id])
    |> validate_required([:name, :ical, :etag, :calendar_id])
    |> unique_constraint([:calendar_id, :name])
  end
end