Rivet.Ecto.Collection behaviour (rivet v2.7.1)
View SourceFor data models using Ecto. Options:
id_type: :uuid, :intid, :none — how to handle record ID
features: [...] — a list of atoms as features, including:
:short_id — enable/disable ShortIdrequired: [:field, ...] — list of fields required for this model
update: [:field, ...] — list of fields allowed to be updated on this model
create: [:field, ...] — list of additional fields allowed only on creation.
unlike the other fields, whatever is provided is
concatenated to required and update. This defaults
to `[:id]`, so specify it as `[]` for no additional
create fields.atomic: [:field, ...] — if included the fields will be used when doing a
conditional/atomic update with `assert: %{}` as
an optional argument to update()foreign_keys: [:field, ...] - list of foreign key constraints (if any)
unique: [:field, ...] — list of unique constraints (if any)
debug: true — will print out some compile-time information for debugging
Note:fk and unique may also be tuple: {:key, [keyword-list options]}
Recap:
create:ONLY on create, but is still optional (default: :id)required:MUST exist on create, and at the intersection of required and update, those values must also existupdate:things that can be updated
Summary
Functions
iex> enrich_query_args(%Ecto.Query{}, order_by: [asc: :asdf]) #Ecto.Query<from q0 in query, order_by: [asc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, desc: :asdf) #Ecto.Query<from q0 in query, order_by: [desc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, asc: :asdf) #Ecto.Query<from q0 in query, order_by: [asc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, limit: 10) #Ecto.Query<from q0 in query, limit: ^10> iex> enrich_query_args(%Ecto.Query{}, preload: [:narf]) #Ecto.Query<from q0 in query, preload: [:narf]> iex> enrich_query_args(%Ecto.Query{}, select: [:narf]) #Ecto.Query<from q0 in query, select: [:narf]>
Callbacks
@callback build(params :: map()) :: Ecto.Changeset.t()
@callback changeset(item :: map(), params :: map()) :: Ecto.Changeset.t()
@callback delete(item :: map()) :: {:ok | :error, Ecto.Changeset.t() | map()}
@callback validate(Ecto.Changeset.t()) :: Ecto.Changeset.t()
Functions
iex> enrich_query_args(%Ecto.Query{}, order_by: [asc: :asdf]) #Ecto.Query<from q0 in query, order_by: [asc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, desc: :asdf) #Ecto.Query<from q0 in query, order_by: [desc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, asc: :asdf) #Ecto.Query<from q0 in query, order_by: [asc: q0.asdf]> iex> enrich_query_args(%Ecto.Query{}, limit: 10) #Ecto.Query<from q0 in query, limit: ^10> iex> enrich_query_args(%Ecto.Query{}, preload: [:narf]) #Ecto.Query<from q0 in query, preload: [:narf]> iex> enrich_query_args(%Ecto.Query{}, select: [:narf]) #Ecto.Query<from q0 in query, select: [:narf]>