Current section
Files
Jump to
Current section
Files
lib/layers/controller/mongo_agile_controller.ex
defmodule MongoAgile.Controller do
@moduledoc """
Controller by default of MongoAgile
Example of use:
* Controller
use MongoAgile.Controller,
collection: "test_aggregate",
pid_mongo: :mongo
* Import AgilQuery + BulderQueries equivalent
import MongoAgile.Queries.AgilQuery
use MongoAgile.BuilderQueries,
collection: "test_aggregate",
pid_mongo: :mongo
You would can extends the functionality, if overwrite ``exe_query``
The controller use exe_query method of AgilQuery, but other would
can create a custom controller, with a other functionality overwriting the method.
and easily the execution of queries will be change.
"""
alias MongoAgile.Controller.ApiQueries
defmacro __using__(opts) do
collection = Keyword.get(opts, :collection)
pid_mongo = Keyword.get(opts, :pid_mongo)
flag_install_api = Keyword.get(opts, :install_api)
[
build_base(collection, pid_mongo),
ApiQueries.install_api(flag_install_api)
]
|> List.flatten()
end
defp build_base(collection, pid_mongo) do
quote bind_quoted: [
collection: collection,
pid_mongo: pid_mongo]
do
use MongoAgile.BuilderQueries,
collection: collection,
pid_mongo: pid_mongo
defdelegate exe_query(query),
to: MongoAgile.Queries.AgilQuery
end
end
end