Trash.Repo (trash v0.1.0)
Provides functions for discarding and keeping records and querying for them
via Ecto.Repo
functions.
Link to this section Summary
Functions
Imports functions from Trash.Repo
.
Fetches all entries matching the given query that have been discarded.
Fetches all entries matching the given query that have been kept.
Updates a record as discarded.
Updates a record as discarded.
Checks if there exists an entry that matches the given query that has been discarded.
Fetches a single discarded result where the primary key matches the given
id
.
Fetches a single discarded result where the primary key matches the given
id
.
Fetches a single discarded result from the query.
Fetches a single discarded result from the query.
Fetches a single kept result where the primary key matches the given id
.
Fetches a single kept result where the primary key matches the given id
.
Fetches a single kept result from the query.
Fetches a single kept result from the query.
Checks if there exists an entry that matches the given query that has been kept.
Fetches a single discarded result from the query.
Fetches a single discarded result from the query.
Fetches a single kept result from the query.
Fetches a single kept result from the query.
Updates a record as kept.
Updates a record as kept.
Link to this section Functions
Specs
Imports functions from Trash.Repo
.
It's not required to use
this module in order to use Trash
. Doing so
will import shorthand functions into your app's Repo
module with the repo
implicitly passed. It's a bit more convenient, but the functions are public
on Trash.Repo
, so if preferred they can be called directly.
# Shorthand with `use`
MyRepo.all_discarded(Post)
# Long form without
Trash.Repo.all_discarded(Post, [], MyRepo)
Options
repo
- A module reference to anEcto.Repo
; raisesArgumentError
if missing
Examples
defmodule MyApp.Repo
use Ecto.Schema
use Trash.Schema, repo: __MODULE__
end
all_discarded(queryable, opts \\ [], repo)
Specs
all_discarded( queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom() ) :: [Ecto.Schema.t()]
Fetches all entries matching the given query that have been discarded.
Examples
iex> Trash.Repo.all_discarded(Post, [], MyApp.Repo)
[%Post{title: "Hello World", discarded_at: %DateTime{}, discarded?: nil}]
all_kept(queryable, opts \\ [], repo)
Specs
all_kept(queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom()) :: [Ecto.Schema.t()]
Fetches all entries matching the given query that have been kept.
Examples
iex> Trash.Repo.all_kept(Post, [], MyApp.Repo)
[%Post{title: "Hello World", discarded_at: nil, discarded?: nil}]
discard(changeset, repo)
Specs
discard( changeset_or_schema :: Ecto.Changeset.t() | Ecto.Schema.t(), repo :: atom() ) :: {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
Updates a record as discarded.
This takes either an Ecto.Changeset
or an Ecto.Schema
struct. If a struct
is given a bare changeset is generated first.
A change is added to the changeset to set discarded_at
to
DateTime.utc_now/1
. It calls repo.update/2
to finalize the changes.
It returns {:ok, struct}
if the struct has been successfully updated or
{:error, changeset}
if there was an error.
Examples
iex> Post.changeset(post, %{title: "[Archived] Hello, world"})
|> Trash.Repo.discard(MyApp.Repo)
{:ok, %Post{title: "[Archived] Hello, world", discarded_at: %DateTime{}}}
discard!(changeset, repo)
Specs
discard!( changeset_or_schema :: Ecto.Changeset.t() | Ecto.Schema.t(), repo :: atom() ) :: Ecto.Schema.t()
Updates a record as discarded.
This takes either an Ecto.Changeset
or an Ecto.Schema
struct. If a struct
is given a bare changeset is generated first.
A change is added to the changeset to set discarded_at
to
DateTime.utc_now/1
. It calls repo.update/2
to finalize the changes.
Raises Ecto.InvalidChangesetError
if the changeset is invalid.
Note: since an Ecto.Schema
struct can be passed which generates a bare
changeset, this will never raise when given a struct.
Examples
iex> Post.changeset(post, %{title: "[Archived] Hello, world"})
|> Trash.Repo.discard!(MyApp.Repo)
%Post{title: "[Archived] Hello, world", discarded_at: %DateTime{}}
iex> Post.changeset(post, %{}) |> Trash.Repo.discard!(MyApp.Repo)
** (Ecto.InvalidChangesetError)
discarded?(queryable, opts \\ [], repo)
Specs
discarded?(queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom()) :: boolean()
Checks if there exists an entry that matches the given query that has been discarded.
Returns a boolean.
Examples
iex> Trash.Repo.discarded?(post, [], MyApp.Repo)
true
get_discarded(queryable, id, opts \\ [], repo)
Specs
get_discarded( queryable :: Ecto.Queryable.t(), id :: term(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single discarded result where the primary key matches the given
id
.
Returns nil
if no result was found.
Examples
iex> Trash.Repo.get_discarded(Post, 1, [], MyApp.Repo)
%Post{}
get_discarded!(queryable, id, opts \\ [], repo)
Specs
get_discarded!( queryable :: Ecto.Queryable.t(), id :: term(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single discarded result where the primary key matches the given
id
.
Raises Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.get_discarded!(Post, 1, [], MyApp.Repo)
%Post{}
iex> Trash.Repo.get_discarded!(Post, 2, [], MyApp.Repo)
** (Ecto.NoResultsError)
get_discarded_by(queryable, clauses, opts \\ [], repo)
Specs
get_discarded_by( queryable :: Ecto.Queryable.t(), clauses :: Keyword.t() | map(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single discarded result from the query.
Returns nil
if no result was found or raises Ecto.MultipleResultsError
if
more than one entry.
Examples
iex> Trash.Repo.get_discarded_by(Post, [title: "Hello World"], [],
MyApp.Repo)
%Post{title: "Hello World", discarded_at: %DateTime{}}
get_discarded_by!(queryable, clauses, opts \\ [], repo)
Specs
get_discarded_by!( queryable :: Ecto.Queryable.t(), clauses :: Keyword.t() | map(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t()
Fetches a single discarded result from the query.
Raises Ecto.MultipleResultsError
if more than one result. Raises
Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.get_discarded_by!(Post, [title: "Hello World"], [],
MyApp.Repo)
%Post{title: "Hello World", discarded_at: %DateTime{}}
iex> Trash.Repo.get_discarded_by!(Post, [title: "Hello World"], [],
MyApp.Repo)
** (Ecto.NoResultsError)
get_kept(queryable, id, opts \\ [], repo)
Specs
get_kept( queryable :: Ecto.Queryable.t(), id :: term(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single kept result where the primary key matches the given id
.
Returns nil
if no result was found.
Examples
iex> Trash.Repo.get_kept(Post, 1, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: nil}
get_kept!(queryable, id, opts \\ [], repo)
Specs
get_kept!( queryable :: Ecto.Queryable.t(), id :: term(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single kept result where the primary key matches the given id
.
Raises Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.get_kept!(Post, 1, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: nil}
iex> Trash.Repo.get_kept!(Post, 2, [], MyApp.Repo)
** (Ecto.NoResultsError)
get_kept_by(queryable, clauses, opts \\ [], repo)
Specs
get_kept_by( queryable :: Ecto.Queryable.t(), clauses :: Keyword.t() | map(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single kept result from the query.
Returns nil
if no result was found or raises Ecto.MultipleResultsError
if
more than one entry.
Examples
iex> Trash.Repo.get_kept_by(Post, title: "Hello World", [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: nil}
get_kept_by!(queryable, clauses, opts \\ [], repo)
Specs
get_kept_by!( queryable :: Ecto.Queryable.t(), clauses :: Keyword.t() | map(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t()
Fetches a single kept result from the query.
Raises Ecto.MultipleResultsError
if more than one result. Raises
Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.get_kept_by!(Post, title: "Hello World", [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: %DateTime{}}
iex> Trash.Repo.get_kept_by!(Post, title: "Not Written", [], MyApp.Repo)
** (Ecto.NoResultsError)
kept?(queryable, opts \\ [], repo)
Specs
kept?(queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom()) :: boolean()
Checks if there exists an entry that matches the given query that has been kept.
Returns a boolean.
Examples
iex> Trash.Repo.kept?(post, [], MyApp.Repo)
true
one_discarded(queryable, opts \\ [], repo)
Specs
one_discarded( queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t() | nil
Fetches a single discarded result from the query.
Returns nil
if no result was found or raises Ecto.MultipleResultsError
if
more than one entry.
Examples
iex> Trash.Repo.one_discarded(Post, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: %DateTime{}}
one_discarded!(queryable, opts \\ [], repo)
Specs
one_discarded!( queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom() ) :: Ecto.Schema.t()
Fetches a single discarded result from the query.
Raises Ecto.MultipleResultsError
if more than one entry. Raises
Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.one_discarded!(Post, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: %DateTime{}}
iex> Trash.Repo.one_discarded!(Post, [], MyApp.Repo)
** (Ecto.NoResultsError)
one_kept(queryable, opts \\ [], repo)
Specs
one_kept(queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom()) :: Ecto.Schema.t() | nil
Fetches a single kept result from the query.
Returns nil
if no result was found or raises Ecto.MultipleResultsError
if
more than one entry.
Examples
iex> Trash.Repo.one_kept(Post, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: nil}
one_kept!(queryable, opts \\ [], repo)
Specs
one_kept!(queryable :: Ecto.Queryable.t(), opts :: Keyword.t(), repo :: atom()) :: Ecto.Schema.t()
Fetches a single kept result from the query.
Raises Ecto.MultipleResultsError
if more than one entry. Raises
Ecto.NoResultsError
if no result was found.
Examples
iex> Trash.Repo.one_kept!(Post, [], MyApp.Repo)
%Post{title: "Hello World", discarded_at: nil}
iex> Trash.Repo.one_kept!(Post, [], MyApp.Repo)
** (Ecto.NoResultsError)
restore(changeset, repo)
Specs
restore( changeset_or_schema :: Ecto.Changeset.t() | Ecto.Schema.t(), repo :: atom() ) :: {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
Updates a record as kept.
This takes either an Ecto.Changeset
or an Ecto.Schema
struct. If a struct
is given a bare changeset is generated first.
A change is added to the changeset to set discarded_at
to nil
. It calls
repo.update/2
to finalize the changes.
It returns {:ok, struct}
if the struct has been successfully updated or
{:error, changeset}
if there was an error.
Examples
iex> Post.changeset(post, %{title: "Hello, world"})
|> Trash.Repo.restore(MyApp.Repo)
{:ok, %Post{title: "Hello, world", discarded_at: nil}}
restore!(changeset, repo)
Specs
restore!( changeset_or_schema :: Ecto.Changeset.t() | Ecto.Schema.t(), repo :: atom() ) :: Ecto.Schema.t()
Updates a record as kept.
This takes either an Ecto.Changeset
or an Ecto.Schema
struct. If a struct
is given a bare changeset is generated first.
A change is added to the changeset to set discarded_at
to nil
. It calls
repo.update/2
to finalize the changes.
Raises Ecto.InvalidChangesetError
if the changeset is invalid.
Note: since an Ecto.Schema
struct can be passed which generates a bare
changeset, this will never raise when given a struct.
Examples
iex> Post.changeset(post, %{title: "[Archived] Hello, world"})
|> Trash.Repo.restore!(MyApp.Repo)
%Post{title: "[Archived] Hello, world", discarded_at: nil}
iex> Post.changeset(post, %{}) |> Trash.Repo.restore!(MyApp.Repo)
** (Ecto.InvalidChangesetError)