Packages
riptide
0.2.2
0.5.2
0.5.1
0.5.0-beta9
0.5.0-beta8
0.5.0-beta7
0.5.0-beta6
0.5.0-beta5
0.5.0-beta4
0.5.0-beta3
0.5.0-beta2
0.5.0-beta11
0.5.0-beta10
0.5.0-beta
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0-bd63a38
0.2.79
0.2.78
0.2.74
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A data first framework for building realtime applications
Current section
Files
Jump to
Current section
Files
lib/riptide/handlers/query.ex
defmodule Riptide.Handler.Query do
use Riptide.Handler
def handle_call("riptide.query", query, state) do
case Riptide.query(query, state) do
{:error, msg} ->
{:error, msg, state}
{:ok, result} ->
layers = Riptide.Query.flatten(query)
Enum.each(layers, fn {path, opts} ->
if opts[:subscribe] === true do
Riptide.Subscribe.watch(path)
end
end)
{:reply,
layers
|> Enum.reduce(Riptide.Mutation.new(result), fn {path, opts}, collect ->
opts
|> Map.keys()
|> Enum.any?(fn key -> Enum.member?([:limit, :min, :max], key) end)
|> case do
true -> Riptide.Mutation.delete(collect, path)
false -> collect
end
end), state}
end
end
end