View Source EctoForge.CreateInstance behaviour (ecto_forge v0.1.17)

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

Link to this callback

execute_extension(mode, query, attrs, module)

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