View Source Bonfire.Common.Repo (Bonfire v0.9.10-classic-beta.169)
Main Ecto Repo.
Note: functions are defined in Bonfire.Common.RepoTemplate
Summary
Functions
Callback implementation for Ecto.Repo.aggregate/3
.
Callback implementation for Ecto.Repo.aggregate/4
.
Callback implementation for Ecto.Repo.all/2
.
Callback implementation for Ecto.Repo.checked_out?/0
.
Callback implementation for Ecto.Repo.checkout/2
.
Callback implementation for Ecto.Repo.config/0
.
Callback implementation for Ecto.Repo.default_options/1
.
Callback implementation for Ecto.Repo.delete/2
.
Callback implementation for Ecto.Repo.delete!/2
.
Callback implementation for Ecto.Repo.delete_all/2
.
Execute a query to delete all matching records.
A convenience function for SQL-based repositories that forces all connections in the pool to disconnect within the given interval.
Callback implementation for Ecto.Repo.exists?/2
.
A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar depending on the adapter to obtain statistics for the given query.
Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}.
Execute a query for multiple results given one or multiple IDs.
Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}.
Like single/1
, except on failure, adds an error to the changeset.
Callback implementation for Ecto.Repo.get/3
.
Callback implementation for Ecto.Repo.get!/3
.
Callback implementation for Ecto.Repo.get_by/3
.
Callback implementation for Ecto.Repo.get_by!/3
.
Callback implementation for Ecto.Repo.get_dynamic_repo/0
.
Callback implementation for Ecto.Repo.in_transaction?/0
.
Callback implementation for Ecto.Repo.insert/2
.
Callback implementation for Ecto.Repo.insert!/2
.
Callback implementation for Ecto.Repo.insert_all/3
.
Insert all or ignore a list of maps into a schema.
Insert or ignore a changeset or struct into a schema.
Insert or ignore a map (or iterate over a list of maps) into a schema.
Callback implementation for Ecto.Repo.insert_or_update/2
.
Callback implementation for Ecto.Repo.insert_or_update!/2
.
Callback implementation for Ecto.Repo.load/2
.
Execute a query for multiple results and return the results.
Execute a query for multiple results and return one page of results.
This uses the main implementation for pagination, which is cursor-based and powered by the Paginator
library.
Execute a query for one result and return either a result or a fallback value (nil
by default).
Add an ilike
clause to a query if the user query is safe.
Callback implementation for Ecto.Repo.one/2
.
Callback implementation for Ecto.Repo.one!/2
.
Different implementation for pagination using Scrivener (used by eg. rauversion).
Select and return only specific fields (specified as an atom or list of atoms)
Callback implementation for Ecto.Repo.preload/3
.
Callback implementation for Ecto.Repo.prepare_query/3
.
Like insert/1
, but understands remapping changeset errors to attr
names from config (and only config, no overrides at present!)
Callback implementation for Ecto.Repo.put_dynamic_repo/1
.
Like put/1
but for multiple changesets
A convenience function for SQL-based repositories that executes the given query.
A convenience function for SQL-based repositories that executes the given query.
A convenience function for SQL-based repositories that executes the given multi-result query.
A convenience function for SQL-based repositories that executes the given multi-result query.
Callback implementation for Ecto.Repo.reload/2
.
Callback implementation for Ecto.Repo.reload!/2
.
Callback implementation for Ecto.Repo.rollback/1
.
Execute a query for one result and return either an {:ok, result}
or {:error, :not_found}
tuple.
Executes raw SQL query.
Callback implementation for Ecto.Repo.start_link/1
.
Callback implementation for Ecto.Repo.stop/1
.
Callback implementation for Ecto.Repo.stream/2
.
A convenience function for SQL-based repositories that translates the given query to SQL.
Can be used to log specific queries (by calling function) in production.
Run a transaction, similar to Repo.transaction/1
, but it expects an ok or error
tuple. If an error tuple is returned, the transaction is aborted.
Callback implementation for Ecto.Repo.transaction/2
.
Callback implementation for Ecto.Repo.update/2
.
Callback implementation for Ecto.Repo.update!/2
.
Callback implementation for Ecto.Repo.update_all/3
.
Inserts or updates data in the database with upsert semantics.
Insert or update all entries with upsert semantics.
Functions
Callback implementation for Ecto.Repo.aggregate/3
.
Callback implementation for Ecto.Repo.aggregate/4
.
Callback implementation for Ecto.Repo.all/2
.
Callback implementation for Ecto.Repo.checked_out?/0
.
Callback implementation for Ecto.Repo.checkout/2
.
Callback implementation for Ecto.Repo.config/0
.
Callback implementation for Ecto.Repo.default_options/1
.
Callback implementation for Ecto.Repo.delete/2
.
Callback implementation for Ecto.Repo.delete!/2
.
Callback implementation for Ecto.Repo.delete_all/2
.
Execute a query to delete all matching records.
Examples
iex> delete_many(from u in User, where: u.id < 100)
{:ok, _count}
A convenience function for SQL-based repositories that forces all connections in the pool to disconnect within the given interval.
See Ecto.Adapters.SQL.disconnect_all/3
for more information.
Callback implementation for Ecto.Repo.exists?/2
.
A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar depending on the adapter to obtain statistics for the given query.
See Ecto.Adapters.SQL.explain/4
for more information.
Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}.
Examples
iex> fetch(User, 1)
{:ok, %User{}}
iex> fetch(User, 999)
{:error, :not_found}
Execute a query for multiple results given one or multiple IDs.
Examples
iex> fetch_all(User, [1, 2, 3])
[%User{}, %User{}, %User{}]
iex> fetch_all(User, 999)
[]
Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}.
Examples
iex> fetch_by(User, name: "Alice")
{:ok, %User{}}
iex> fetch_by(User, name: "Nonexistent")
{:error, :not_found}
Like single/1
, except on failure, adds an error to the changeset.
Examples
iex> changeset = %Ecto.Changeset{}
iex> find(from u in User, where: u.id == 1, changeset)
{:ok, %User{}}
iex> changeset = %Ecto.Changeset{}
iex> find(from u in User, where: u.id == 999, changeset)
{:error, %Ecto.Changeset{}}
Callback implementation for Ecto.Repo.get/3
.
Callback implementation for Ecto.Repo.get!/3
.
Callback implementation for Ecto.Repo.get_by/3
.
Callback implementation for Ecto.Repo.get_by!/3
.
Callback implementation for Ecto.Repo.get_dynamic_repo/0
.
Callback implementation for Ecto.Repo.in_transaction?/0
.
Callback implementation for Ecto.Repo.insert/2
.
Callback implementation for Ecto.Repo.insert!/2
.
Callback implementation for Ecto.Repo.insert_all/3
.
Insert all or ignore a list of maps into a schema.
Examples
iex> insert_all_or_ignore(MySchema, [%{field: "value1"}, %{field: "value2"}])
{:ok, _result}
Insert or ignore a changeset or struct into a schema.
Examples
iex> insert_or_ignore(%Ecto.Changeset{})
{:ok, _result}
iex> insert_or_ignore(%MySchema{field: "value"})
{:ok, _result}
Insert or ignore a map (or iterate over a list of maps) into a schema.
Examples
iex> insert_or_ignore(MySchema, %{field: "value"})
[{:ok, _result}]
iex> insert_or_ignore(MySchema, [%{field: "value1"}, %{field: "value2"}])
[{:ok, _result}]
Callback implementation for Ecto.Repo.insert_or_update/2
.
Callback implementation for Ecto.Repo.insert_or_update!/2
.
Callback implementation for Ecto.Repo.load/2
.
Execute a query for multiple results and return the results.
Examples
iex> many(from u in User)
[%User{}, %User{}]
iex> many(from u in User, return: :query)
#Ecto.Query<...>
many_paginated(queryable, opts \\ [], repo_opts \\ default_repo_opts())
View SourceExecute a query for multiple results and return one page of results.
This uses the main implementation for pagination, which is cursor-based and powered by the Paginator
library.
Examples
iex> many_paginated(User, [limit: 10])
%Paginator.Page{}
Execute a query for one result and return either a result or a fallback value (nil
by default).
Examples
iex> maybe_one(from u in User, where: u.id == 1)
%User{}
iex> maybe_one(from u in User, where: u.id == 999, "fallback")
"fallback"
maybe_where_ilike(query, field, user_query, system_prefix \\ "", system_suffix \\ "")
View SourceAdd an ilike
clause to a query if the user query is safe.
Examples
iex> maybe_where_ilike(Needle.Pointer, :id, "Alice")
#Ecto.Query<...>
iex> maybe_where_ilike(Needle.Pointer, :id, "Al%ice")
Needle.Pointer
# ^ unchanged due to unsafe query
Callback implementation for Ecto.Repo.one/2
.
Callback implementation for Ecto.Repo.one!/2
.
Different implementation for pagination using Scrivener (used by eg. rauversion).
Examples
iex> paginate(User, page: 1, page_size: 10)
%Scrivener.Page{}
Select and return only specific fields (specified as an atom or list of atoms)
Examples
> pluck(:id)
[id1, id2]
> pluck([:id, :inserted_at])
[%{id: id1, inserted_at: _}, %{id: id2, inserted_at: _}]
Callback implementation for Ecto.Repo.preload/3
.
Callback implementation for Ecto.Repo.prepare_query/3
.
Like insert/1
, but understands remapping changeset errors to attr
names from config (and only config, no overrides at present!)
Examples
iex> changeset = %Ecto.Changeset{valid?: false}
iex> put(changeset)
{:error, %Ecto.Changeset{}}
Callback implementation for Ecto.Repo.put_dynamic_repo/1
.
Like put/1
but for multiple changesets
Examples
iex> changesets = [%{valid?: true}, %{valid?: false}]
iex> put_many(changesets)
{:error, [%{valid?: false}]}
iex> changesets = [%{valid?: true}, %{valid?: true}]
iex> put_many(changesets)
{:ok, _result}
A convenience function for SQL-based repositories that executes the given query.
See Ecto.Adapters.SQL.query/4
for more information.
A convenience function for SQL-based repositories that executes the given query.
See Ecto.Adapters.SQL.query!/4
for more information.
A convenience function for SQL-based repositories that executes the given multi-result query.
See Ecto.Adapters.SQL.query_many/4
for more information.
A convenience function for SQL-based repositories that executes the given multi-result query.
See Ecto.Adapters.SQL.query_many!/4
for more information.
Callback implementation for Ecto.Repo.reload/2
.
Callback implementation for Ecto.Repo.reload!/2
.
Callback implementation for Ecto.Repo.rollback/1
.
Execute a query for one result and return either an {:ok, result}
or {:error, :not_found}
tuple.
Examples
iex> single(from u in User, where: u.id == 1)
{:ok, %User{}}
iex> single(from u in User, where: u.id == 999)
{:error, :not_found}
Executes raw SQL query.
Examples
> YourModule.sql("SELECT * FROM pointers")
Callback implementation for Ecto.Repo.start_link/1
.
Callback implementation for Ecto.Repo.stop/1
.
Callback implementation for Ecto.Repo.stream/2
.
A convenience function for SQL-based repositories that translates the given query to SQL.
See Ecto.Adapters.SQL.to_sql/3
for more information.
Can be used to log specific queries (by calling function) in production.
Examples
iex> trace(fn -> Repo.all(User) end)
[%User{}, %User{}]
Run a transaction, similar to Repo.transaction/1
, but it expects an ok or error
tuple. If an error tuple is returned, the transaction is aborted.
Examples
iex> transact_with(fn -> {:ok, "success"} end)
"success"
iex> transact_with(fn -> {:error, "failure"} end)
** (Ecto.RollbackError) Rolling back the DB transaction, error reason: failure
Callback implementation for Ecto.Repo.transaction/2
.
Callback implementation for Ecto.Repo.update/2
.
Callback implementation for Ecto.Repo.update!/2
.
Callback implementation for Ecto.Repo.update_all/3
.
upsert(cs, keys_or_attrs_to_update \\ nil, conflict_target \\ [:id])
View SourceInserts or updates data in the database with upsert semantics.
cs
- The changeset or schema to insert or update.keys_or_attrs_to_update
- A list of keys or a map of attributes to update.conflict_target
- The column(s) or constraint to check for conflicts, defaults to[:id]
.
Examples
iex> upsert(%Ecto.Changeset{}, [:field1, :field2])
{:ok, _result}
iex> upsert(%Ecto.Changeset{}, %{field1: "value"})
{:ok, _result}
Insert or update all entries with upsert semantics.
schema
- The schema or table name to insert or update.data
- A list of maps containing the data to insert or update.conflict_target
- The column(s) or constraint to check for conflicts, defaults to[:id]
.
Examples
iex> upsert_all(User, [%{id: 1, name: "Alice"}, %{id: 2, name: "Bob"}])
{:ok, _result}
iex> upsert_all(User, [%{id: 1, name: "Alice Updated"}], [:id])
{:ok, _result}