Packages

Mongo Agile Library for Elixir, with a micro-language integrated query

Current section

Files

Jump to
mongo_agile lib layers builder_queries queries aggregate.ex
Raw

lib/layers/builder_queries/queries/aggregate.ex

defmodule MongoAgile.BuilderQueries.AggregateBuilder do
@moduledoc """
Macro Pipeline
## Base
* `pipeline` - Pipeline aggregate
## Options
Source: https://hexdocs.pm/mongodb/Mongo.html
* `:allow_disk_use` - Enables writing to temporary files (Default: false)
* `:collation` - Optionally specifies a collation to use in MongoDB 3.4 and
* `:max_time` - Specifies a time limit in milliseconds
* `:use_cursor` - Use a cursor for a batched response (Default: true)
"""
defmodule Schema do
@moduledoc false
use MapSchema,
atomize: true,
schema: %{
:pipeline => :list,
:allow_disk_use => :bool,
:collation => :any,
:max_time => :integer,
:use_cursor => :bool
}
end
alias MongoAgile.BuilderQueries.Macros.Generic
defmacro __using__(_opts) do
quote do
import MongoAgile.BuilderQueries.AggregateBuilder
end
end
defmacro aggregate(description, keyword) do
alias MongoAgile.BuilderQueries.AggregateBuilder
alias MongoAgile.Queries.Aggregate
Generic.macro_query(description, keyword, AggregateBuilder, Aggregate)
end
end