Packages
riptide
0.5.1
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/tree/branch.ex
defmodule Riptide.Branch do
defstruct [:name, :columns, :schema]
defmacro __using__(path) do
quoted =
path
|> Stream.scan([], fn item, collect ->
collect ++ [item]
end)
|> Stream.map(fn path ->
vars = Enum.filter(path, fn item -> !is_binary(item) end)
quote do
def query(unquote_splicing(vars)) do
Riptide.query_path!(unquote(path))
end
def delete(unquote_splicing(vars)) do
Riptide.Mutation.put_delete(unquote(path))
end
end
end)
|> Enum.to_list()
definition =
Enum.map(path, fn
{atom, _, _} -> atom
bin -> bin
end)
vars = Enum.filter(path, fn item -> !is_binary(item) end)
quote do
import Riptide.Schema
unquote(quoted)
def merge(unquote_splicing(vars), data) do
Riptide.Mutation.put_merge(unquote(path), data)
end
def branch() do
unquote(definition)
end
end
end
end