Packages
blossom
0.27.1
0.29.3
0.29.2
0.29.1
0.29.0
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.3
0.26.2
0.26.1
0.26.0
0.25.3
0.25.2
0.25.1
0.25.0
0.24.1
0.24.0
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.8
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Easy identity for easy authentication
Current section
Files
Jump to
Current section
Files
lib/blossom/schema.ex
defmodule Blossom.Schema do
defmacro filter_allowed(bindings, id_table, opts \\ nil) do
binds = var!(bindings)
casks_table = opts[:casks_table] || id_table
allow_nil_casks = opts[:allow_nil_casks] || false
quote do
if unquote(allow_nil_casks) == true do
def allowed_casks(params) do
allowed = Map.get(params, "allowed_casks", [])
dynamic(
unquote(binds),
unquote(casks_table).cask in ^allowed or
is_nil(unquote(casks_table).cask)
)
end
else
def allowed_casks(params) do
allowed = Map.get(params, "allowed_casks", [])
dynamic(unquote(binds), unquote(casks_table).cask in ^allowed)
end
end
def allowed_ids(params) do
allowed = Map.get(params, "allowed_ids", [])
dynamic(unquote(binds), unquote(id_table).id in ^allowed)
end
def filter_by_allowed(
query,
%{"allowed_ids" => _, "allowed_casks" => _} = params
) do
casks = allowed_casks(params)
ids = allowed_ids(params)
where(query, unquote(binds), ^dynamic(unquote(binds), ^casks or ^ids))
end
def filter_by_allowed(query, %{"allowed_casks" => _} = params) do
casks = allowed_casks(params)
where(query, unquote(binds), ^dynamic(unquote(binds), ^casks))
end
def filter_by_allowed(query, %{"allowed_ids" => _} = params) do
ids = allowed_ids(params)
where(query, unquote(binds), ^dynamic(unquote(binds), ^ids))
end
def filter_by_allowed(query, params) do
query
end
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Schema, unquote(opts)
import Blossom.Schema
import Djinn
end
end
end