View Source EctoForge.DatabaseApi behaviour (ecto_forge v0.1.18)

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"})
Link to this callback

create(create_attrs, function_changest_from_module)

View Source
@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)
@callback create!(map :: map() | keyword()) :: struct()

do changeset with Repo.insert!()

example

"@module_model".create(%{name: "artem"})
@callback create!(
  map :: map() | keyword(),
  function :: atom()
) :: struct()

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}})
@callback find(get_attrs :: map() | keyword()) :: nil | struct()

find something in your "@module_model" execut your extension and can be filtered or

example

nil_or_sturct = "@module_model".find(%{filter: %{name: "some"}})
@callback find_all(get_attrs :: map() | keyword()) :: [] | [struct()]

execut your extension and can be filtered or

example

nil_or_sturct = "@module_model".find(%{filter: %{name: "some"}})
@callback get(get_attrs :: map() | keyword()) :: {:ok, struct()} | {:error, any()}

execut your extension get and can be filtered if not found

example

{:ok, @module_model} = "@module_model".get(%{filter: %{name: "some"}})
@callback get!(get_attrs :: map() | keyword()) :: struct()

execut your extension get and can be filtered if not found do error Ecto.NoResultsError

example

@module_model = "@module_model".get(%{filter: %{name: "some"}})
@callback get_all(get_attrs :: map() | keyword()) :: {:ok, [struct()]} | {:error, any()}

execut your extension get and can be filtered if not found

example

{:ok, [@module_model]} = "@module_model".get_all(%{filter: %{name: "some"}})
@callback get_all!(get_attrs :: map() | keyword()) :: [struct()]

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"}})
Link to this callback

update(item, opts, attrs)

View Source
@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(%{})
Link to this callback

update!(item, opts, attrs)

View Source
@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!(%{})
Link to this callback

update_by_opts(get_opts, update_opts, attrs)

View Source
@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: ""})
Link to this callback

update_by_opts!(get_opts, update_opts, attrs)

View Source
@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: ""})