Current section
Files
Jump to
Current section
Files
lib/ex_dav/storage/postgres/schemas/calendar.ex
defmodule ExDav.Storage.Postgres.Schemas.Calendar do
@moduledoc "A CalDAV calendar collection owned by a user."
use Ecto.Schema
import Ecto.Changeset
alias ExDav.Storage.Postgres.Schemas.{Object, User}
schema "caldav_calendars" do
field :name, :string
field :display_name, :string
field :description, :string
field :components, {:array, :string}, default: ["VEVENT", "VTODO"]
field :ctag, :integer, default: 0
belongs_to :user, User
has_many :objects, Object, foreign_key: :calendar_id
timestamps(type: :utc_datetime)
end
def changeset(calendar, attrs) do
calendar
|> cast(attrs, [:name, :display_name, :description, :components, :ctag, :user_id])
|> validate_required([:name, :user_id])
|> unique_constraint([:user_id, :name])
end
def update_props_changeset(calendar, attrs) do
calendar
|> cast(attrs, [:display_name, :description])
end
end