Current section

Files

Jump to
durango lib aql insert.ex
Raw

lib/aql/insert.ex

defmodule Durango.AQL.Insert do
defmacro inject_parser() do
quote do
alias Durango.Query
alias Durango.Dsl
alias Durango.Dsl.BoundVar
@in_keys [:into, :in]
def parse_query(%Query{} = q, [{:insert, insert_expr}, {in_key, in_expr} | rest]) when in_key in @in_keys do
in_token = case in_key do
:into -> "INTO"
:in -> "IN"
end
q
|> Query.put_local_var(:NEW)
|> Query.append_tokens("INSERT")
|> Dsl.parse_expr(insert_expr)
|> Query.append_tokens(in_token)
|> Dsl.parse_collection_name(in_expr)
|> Dsl.parse_query(rest)
end
end
end
end