View Source EctoForge.DatabaseApi behaviour (ecto_forge v0.1.19)
Implements base functions for database
use(
EctoForge.DatabaseApi,
[
repo: MyApp.Repo, # required param
extensions_get: [], # default list
extensions_events: [], # default list
extensions_events_additional: [], # this don't rewrite extensions_get when you use EctoForge.Instanse
extensions_get_additional: [], # this don't rewrite extensions_get when you use EctoForge.Instanse
]
)
addinotal
if you use through use EctoForge.CreateInstance
you can rewrite extensions_get
extensions_events
with extensions_events_additional
functions find_all, works only with extension EctoForge.Extension.Get.Preload
, EctoForge.Extension.Get.Filter
or you can write yours own
This module creates an instance of the database all functions function. It can be used through the use of Parameter
- create(map) # takes changeset and does repo.insert()
- create(map, :function_for_changeset),
- create!(map, :function_for_changeset), # takes function_for_changeset from the module and does repo.insert!()
- create!(map, :function_for_changeset), # takes the changeset and does a repo.insert!()
- find_all(map or keyword) # returns result_list or nil
- find(map or keyword) # returns result or nil
- get(map or keyword) # returns {:ok, result_one} or {:error, result_one}
- get!(map or keyword) # returns result or return throw
- get_all(map or keyword) # returns {:ok, list} or {:error, list}
- get_all!(map or keyword) # result items or throw(no results)
- update_by_opts(get_params, update) # result {:ok, item} or {:error, result}
- update(item, opts_update) # result {:ok, item} or {:error, result}
- update!(item, update_opts) # return item or throw
- update(item) # return {:ok, item} or {:error, result}
- update_with_another_changeset!(%@module_model{} = item, opts, function_atom) # return item or throw
- update_with_another_changeset(%@module_model{} = item, opts, function_atom) # return {:ok, item} or {:error, result}
- delete(%@modulemodel{} or opts_for_get) # result {:ok, } or {:error, _}
- delete!(%@modulemodel{} or opts_for_get) # result {:ok, } or {:error, _}
- update_or_create!(get_attrs, or_insert_update_attrs, opts )
- update_or_create(get_attrs, or_insert_update_attrs, opts )
Summary
Callbacks
do changeset with Repo.insert()
do another changeset in your model with Repo.insert!()
do changeset with Repo.insert!()
do another changeset in your model with Repo.insert!()
delete your Model by struct do Repo.delete()
delete your Model by struct do Repo.delete!()
find something in your "@module_model" execut your extension and can be filtered or
execut your extension and can be filtered or
execut your extension get and can be filtered if not found
execut your extension get and can be filtered
if not found do error Ecto.NoResultsError
execut your extension get and can be filtered if not found
execut your extension get and can be filtered
if not found do error Ecto.NoResultsError
do your changeset with @module_model and Repo.update()
do your changeset with @module_model and Repo.update!()
do @module_model.get!() if got and do @module_model.update!()
do @module_model.get!() if got and do @module_model.update!() if error raise
Callbacks
@callback create(create_attrs :: map() | keyword()) :: {:ok, struct()} | {:error, Ecto.Changeset.t()}
do changeset with Repo.insert()
example
{:ok, _}= "@module_model".create(%{name: "artem"})
@callback create( create_attrs :: map() | keyword(), function_changest_from_module :: atom() ) :: {:ok, struct()} | {:error, Ecto.Changeset.t()}
do another changeset in your model with Repo.insert!()
example
"@module_model".create!(%{name: "artem"}, :function_changest_from_module)
do changeset with Repo.insert!()
example
"@module_model".create(%{name: "artem"})
do another changeset in your model with Repo.insert!()
example
"@module_model".create(%{name: "artem"}, :another_changeset_in_your_module_model)
@callback delete(item :: struct() | map() | keyword()) :: {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
delete your Model by struct do Repo.delete()
{:ok, Ecto.Schema.t()} = "@module_model".delete(@module_model)
you can use filter if you pass on %{filter: %{}}
{:ok, Ecto.Schema.t()} = "@module_model".delete(%{filter: %{id: 1}})
@callback delete!(item :: struct() | map() | keyword()) :: Ecto.Schema.t()
delete your Model by struct do Repo.delete!()
{:ok, Ecto.Schema.t()} = "@module_model".delete(@module_model)
you can use filter if you pass on %{filter: %{}}
Ecto.Schema.t() = "@module_model".delete(%{filter: %{id: 1}})
find something in your "@module_model" execut your extension and can be filtered or
example
nil_or_sturct = "@module_model".find(%{filter: %{name: "some"}})
execut your extension and can be filtered or
example
nil_or_sturct = "@module_model".find(%{filter: %{name: "some"}})
execut your extension get and can be filtered if not found
example
{:ok, @module_model} = "@module_model".get(%{filter: %{name: "some"}})
execut your extension get and can be filtered
if not found do error Ecto.NoResultsError
example
@module_model = "@module_model".get(%{filter: %{name: "some"}})
execut your extension get and can be filtered if not found
example
{:ok, [@module_model]} = "@module_model".get_all(%{filter: %{name: "some"}})
execut your extension get and can be filtered
if not found do error Ecto.NoResultsError
example
{:ok, [@module_model]} = "@module_model".get_all(%{filter: %{name: "some"}})
@callback update(item :: struct(), opts :: map() | keyword(), attrs :: keyword()) :: {:ok, struct()} | {:error, struct()}
do your changeset with @module_model and Repo.update()
example
{:ok, _update} "@module_model".update(%{})
@callback update!(item :: struct(), opts :: map() | keyword(), attrs :: keyword()) :: {:ok, struct()} | {:error, struct()}
do your changeset with @module_model and Repo.update!()
example
@module_model = "@module_model".update!(%{})
@callback update_by_opts( get_opts :: map() | keyword(), update_opts :: keyword() | map(), attrs :: list() ) :: {:ok, struct()} | {:error, Ecto.Changeset.t()} | {:error, :not_found} | {:error, any()}
do @module_model.get!() if got and do @module_model.update!()
example
{:ok, @module_model} = @module_model.update_by_opts(%{id: 1}, %{name: ""})
@callback update_by_opts!( get_opts :: map() | keyword(), update_opts :: keyword() | map(), attrs :: list() ) :: struct()
do @module_model.get!() if got and do @module_model.update!() if error raise
example
@module_model = @module_model.update_by_opts!(%{id: 1}, %{name: ""})