OnePiece.Commanded.QueryHandler behaviour (OnePiece.Commanded v0.4.1) View Source

Defines a module as a "Query Handler". For more information about queries, please read the following:

Link to this section Summary

Callbacks

Handle the incoming params and return the result data.

Link to this section Types

Specs

error() :: any()

Specs

view_model() :: struct()

Link to this section Callbacks

Specs

handle(params :: any()) :: {:ok, view_model()} | {:error, error()}

Handle the incoming params and return the result data.

Link to this section Functions

Link to this macro

__using__(opts \\ [])

View Source (macro)

Specs

__using__(opts :: []) :: any()

Convert the module into a OnePiece.Commanded.QueryHandler.

Usage

defmodule MyQueryHandler do
  use OnePiece.Commanded.QueryHandler
  import Ecto.Query, only: [from: 2]

  @impl OnePiece.Commanded.QueryHandler
  def handle(params) do
    query = from u in User,
              where: u.age > 18 or is_nil(params.email),
              select: u

    {:ok, Repo.all(query)}
  end
end