View Source EctoForge.CreateInstance behaviour (ecto_forge v0.1.18)
Create your instanse EctoForge and use for your context or Models
This module creates an instance with functions from EctoForge.DatabaseApi
Using
defmodule MyApp.EctoForgeInstanse do
use EctoForge.CreateInstance,
extensions_events: [Test.Event.ExtensionDeleteId],
extensions_get: [
EctoForge.Extension.Get.Preload,
EctoForge.Extension.Get.Filter,
EctoForge.Extension.Get.Pagination
],
repo: EctoForge.Repo
end
Connect to your model
defmodule EctoForgeTest.UserModel do
use Ecto.Schema
import Ecto.Changeset
@type t() :: %__MODULE__{}
schema "user" do
field(:name, :string)
# timestamps()
end
use EctoForge.CreateInstance
@doc false
def changeset(emails_model \ %__MODULE__{}, attrs) do
emails_model
|> cast(attrs, [:name])
|> validate_required([:name])
end
end
Connect to your context
defmodule MyApp.Context.UserModel do
use MyApp.EctoForgeInstanseBase, module_model: MyApp.UserModel
end
Summary
Callbacks
Do execute your extension without connect to model
Example
[%UserModel{}] = execute_extension(from(user in UserModel), :all, %{
filter: %{name: "arte"}
})
Callbacks
@callback execute_extension( mode :: atom() | :all | :one, query :: Ecto.Query.t(), attrs :: map() | keyword(), module :: module() ) :: map() | struct() | list() | nil
Do execute your extension without connect to model
Example
[%UserModel{}] = execute_extension(from(user in UserModel), :all, %{
filter: %{name: "arte"}
})