EctoCrux.Schema.Baguettes (EctoCrux v1.2.3)

Sample module using EctoCrux

Link to this section Summary

Functions

[Repo] Fetches all entries from the data store

call schema_module changeset method

Count number of elements

Count number of entries with opts

Count number of entries from a query with opts

[Repo proxy of insert/2] Create (insert) a new baguette from attrs

Create (insert) a baguette from attrs if it doesn't exist

[Repo] Create (insert) a baguette from attrs if it doesn't exist

[Repo] Create (insert) a baguette from attrs if it doesn't exist

[Repo proxy] Deletes a struct using its primary key.

Test if an entry with <presence_attrs> exists

[Repo] Fetches all results using the query.

[Repo] Fetches all results using the query, with opts

[Repo] Fetches a single struct from the data store where the primary key matches the given id.

[Repo] Similar to get/2 but raises Ecto.NoResultsError if no record was found.

[Repo] Fetches a single result from the clauses.

create a new query using schema module

default page size if using pagination

[Repo proxy] Preloads all associations on the given struct or structs.

configured repo to use

schema module is it associated to

Like find_by/1 by returns a stream to handle large requests

[Repo proxy] Updates a changeset using its primary key.

Link to this section Functions

Link to this function

all(opts \\ [])

Specs

all(opts :: Keyword.t()) :: [EctoCrux.Schema.Baguette.t()]

[Repo] Fetches all entries from the data store

# Fetch all Baguettes
Baguettes.all()
# Fetch all Baguettes within Repo prefix "francaise"
Baguettes.all(prefix: "francaise")

Options

Link to this function

change(blob, attrs \\ %{})

call schema_module changeset method

Specs

count() :: integer()

Count number of elements

baguettes_count = Baguettes.count()

Specs

count(query :: Ecto.Query.t()) :: integer()
count(opts :: Keyword.t()) :: integer()

Count number of entries with opts

baguettes_count = Baguettes.count(prefix: "francaise")

Options

Link to this function

count(query, opts)

Specs

count(query :: Ecto.Query.t(), opts :: Keyword.t()) :: integer()

Count number of entries from a query with opts

query = from b in Baguette, where :kind in ["tradition"]
baguettes_count = Baguettes.count(query, prefix: "francaise")

Options

Link to this function

create(attrs \\ %{}, opts \\ [])

Specs

create(attrs :: map(), opts :: Keyword.t()) ::
  {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

[Repo proxy of insert/2] Create (insert) a new baguette from attrs

# Create a new baguette with `:kind` value set to `:tradition`
{:ok, baguette} = Baguettes.create(%{kind: :tradition})

Options

@see Repo.insert/2

Link to this function

create_if_not_exist(attrs)

Specs

create_if_not_exist(attrs :: map()) ::
  {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

Create (insert) a baguette from attrs if it doesn't exist

# Create a new baguette with `:kind` value set to `:tradition`
baguette = Baguettes.create(%{kind: :tradition})
# Create another one with the same kind
{:ok, another_ baguette} = Baguettes.create_if_not_exist(%{kind: :tradition})
# `baguette` and `another_baguette` are the same `Baguette`

Options

@see Repo.insert/2

Link to this function

create_if_not_exist(attrs, opts)

Specs

create_if_not_exist(attrs :: map(), opts :: Keyword.t()) ::
  {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}
create_if_not_exist(presence_attrs :: map(), creation_attrs :: map()) ::
  {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

[Repo] Create (insert) a baguette from attrs if it doesn't exist

Behave like create_if_not_exist/1 but you can specify attrs for the presence test, and creation attrs.

Options

@see Repo.insert/2

Link to this function

create_if_not_exist(presence_attrs, creation_attrs, opts)

Specs

create_if_not_exist(
  presence_attrs :: map(),
  creation_attrs :: map(),
  opts :: Keyword.t()
) :: {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

[Repo] Create (insert) a baguette from attrs if it doesn't exist

Behave like create_if_not_exist/1 but you can specify attrs for the presence test, and creation attrs.

Options

@see Repo.insert/2

Link to this function

delete(blob, opts \\ [])

Specs

delete(blob :: EctoCrux.Schema.Baguette.t(), opts :: Keyword.t()) ::
  {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

[Repo proxy] Deletes a struct using its primary key.

{:ok, deleted_baguette} = Baguettes.delete(baguette)

Options

Link to this function

exist?(presence_attrs, opts \\ [])

Specs

exist?(presence_attrs :: map(), opts :: Keyword.t()) ::
  EctoCrux.Schema.Baguette.t() | nil

Test if an entry with <presence_attrs> exists

Link to this function

find_by(filters)

Specs

find_by(filters :: Keyword.t() | map()) :: [EctoCrux.Schema.Baguette.t()]

[Repo] Fetches all results using the query.

query = from b in Baguette, where :kind in ["tradition"]
best_baguettes = Baguettes.find_by(query)
Link to this function

find_by(filters, opts)

Specs

find_by(filters :: Keyword.t() | map(), opts :: map()) :: [
  EctoCrux.Schema.Baguette.t()
]

[Repo] Fetches all results using the query, with opts

query = from b in Baguette, where :kind in ["tradition"]
best_baguettes = Baguettes.find_by(query, prefix: "francaise")

Options

Link to this function

get(id, opts \\ [])

Specs

get(id :: term(), opts :: Keyword.t()) :: EctoCrux.Schema.Baguette.t() | nil

[Repo] Fetches a single struct from the data store where the primary key matches the given id.

# Get the baguette with id primary key `01DACBCR6REMDH6446VCQEZ5EC`
Baguettes.get("01DACBCR6REMDH6446VCQEZ5EC")
# Get the baguette with id primary key `01DACBCR6REMDH6446VCQEZ5EC` and preload it's bakery and flavor
Baguettes.get("01DACBCR6REMDH6446VCQEZ5EC", preloads: [:bakery, :flavor])

Options

Link to this function

get!(id, opts \\ [])

Specs

get!(id :: term(), opts :: Keyword.t()) :: EctoCrux.Schema.Baguette.t() | nil

[Repo] Similar to get/2 but raises Ecto.NoResultsError if no record was found.

Options

Link to this function

get_by(clauses, opts \\ [])

Specs

get_by(clauses :: Keyword.t() | map(), opts :: Keyword.t()) ::
  EctoCrux.Schema.Baguette.t() | nil

[Repo] Fetches a single result from the clauses.

best_baguette = Baguettes.get_by(kind: "best")

Options

create a new query using schema module

Link to this function

offset_to_page(offset, page_size)

default page size if using pagination

Link to this function

page_to_offset(page, page_size)

Link to this function

preload(blob, preloads, opts \\ [])

Specs

preload(structs_or_struct_or_nil, preloads :: term(), opts :: Keyword.t()) ::
  structs_or_struct_or_nil
when structs_or_struct_or_nil:
       [EctoCrux.Schema.Baguette.t()] | EctoCrux.Schema.Baguette.t() | nil

[Repo proxy] Preloads all associations on the given struct or structs.

my_baguette = Baguettes.preload(baguette, [:floor, :boulanger])

Options

configured repo to use

Link to this function

schema_module()

schema module is it associated to

Link to this function

stream(filters, opts \\ [])

Specs

stream(filters :: Keyword.t(), opts :: Keyword.t()) :: Enum.t()

Like find_by/1 by returns a stream to handle large requests

Repo.transaction(fn ->
  Baguettes.stream(kind: "best")
  |> Stream.chunk_every(@chunk_size)
  |> Stream.each(fn baguettes_chunk ->
    # eat them
  end)
  |> Stream.run()
end)

Options

Link to this function

update(blob, attrs, opts \\ [])

Specs

update(
  blob :: EctoCrux.Schema.Baguette.t(),
  attrs :: map(),
  opts :: Keyword.t()
) :: {:ok, EctoCrux.Schema.Baguette.t()} | {:error, Ecto.Changeset.t()}

[Repo proxy] Updates a changeset using its primary key.

{:ok, updated_baguette} = Baguettes.update(baguette, %{kind: "best"})

Options