Packages

Library for manipulating data from dynamo db, this library its similar to odm from mongo, but to manipulate data easiest, based in Aws Dynamo library.

Current section

Files

Jump to
dynamo_datamapper lib actions assembler.ex
Raw

lib/actions/assembler.ex

defmodule DataMapper.Actions.Assembler do
alias DataMapper.Actions.{Query, Meta, Utils, Data}
def assemble_query(pid, table_name, params) do
primary_key = Utils.get_primary_key(
Meta.get_primary_key(table_name)
)
exist_pk = Map.get(params, primary_key)
if exist_pk != nil do
Query.add_key_condition(pid, Atom.to_string(primary_key), exist_pk)
new_params = Map.delete(params, primary_key)
Enum.each(new_params, fn {key, value} ->
Query.add_filter(
pid,
Atom.to_string(key),
value
)
end)
else
Enum.each(params, fn {key, value} ->
secondary_indexes = Meta.get_global_indexes(table_name)
Enum.each(secondary_indexes, fn secondary_map ->
name = Map.get(secondary_map, "name")
attr = Map.get(name, "AttributeName")
index = Map.get(secondary_map, "index")
if !Query.has_key_condition(pid) do
if attr == Atom.to_string(key) do
Query.add_key_condition(pid, Atom.to_string(key), value)
Query.add_index(pid, index)
new_params = Map.delete(params, key)
Enum.each(new_params, fn {key, value} ->
if Query.has_key_condition(pid) do
Query.add_filter(
pid,
Atom.to_string(key),
value
)
end
end)
end
end
end)
end)
end
Query
end
def scan() do
end
end