Packages
blossom
0.25.3
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, casks_table \\ nil) do
binds = var!(bindings)
casks_table = casks_table || id_table
quote do
def allowed_casks(params) do
allowed = Map.get(params, "allowed_casks", [])
dynamic(unquote(binds), unquote(casks_table).cask in ^allowed)
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