Liking cljdoc? Tell your friends :D

lambdaconnect-model.scoping


add-include-in-push-permissionclj

(add-include-in-push-permission edn)
source

execute-queryclj

(execute-query config tag query)
source

execute-query-genericclj

(execute-query-generic config tag query)
source

execute-query-splitclj

(execute-query-split config tag query)
source

get-scoping-queriesclj

(get-scoping-queries entities-by-name scoping-defintion push?)
(get-scoping-queries entities-by-name
                     scoping-defintion
                     push?
                     {:keys [tags necessary-tags]})

Takes: entities-by-name, parsed (and validated) EDN of scoping rules, push? config map, with optional keys:

  • tags, a set of tags which queries are requested (if not provided all tags are taken by default)
  • necessary-tags, a set of tags which are required for scoping selected tags, calculated with tree obtained from scope_dependeny/get-minimum-scoping-sets if not provided queries for all tags will be calculated and result will be filtered according to tags param

A typical invocation looks like this: (get-scoping-queries entities-by-name validated-scope push?))) (get-scoping-queries entities-by-name validated-scope push? {:tags #{:RAEmployee.ofOwner} :necessary-tags #{:RAEmployee.ofOwner :RAOwner.me}}}))) Returns a map with tags and queries generated to obtain entities for indicated user: {:RAEmployee.ofOwner [:find ?RAEmployee-ofOwner :in $ [?user ...] :where [?user :app/uuid ?G__33023] [(= ?G__33024 ?G__33023)] [?RAOwner-me :RAOwner/internalUserId ?G__33024] [?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me]]} ...

Takes:
 entities-by-name,
 parsed (and validated) EDN of scoping rules,
 push?
 config map, with optional keys:
  - tags, a set of tags which queries are requested (if not provided all tags are taken by default)
  - necessary-tags, a set of tags which are required for scoping selected tags, calculated with tree obtained from scope_dependeny/get-minimum-scoping-sets
    if not provided queries for all tags will be calculated and result will be filtered according to tags param

 A typical invocation looks like this:
 (get-scoping-queries entities-by-name validated-scope push?)))
 (get-scoping-queries entities-by-name validated-scope push? {:tags #{:RAEmployee.ofOwner} :necessary-tags #{:RAEmployee.ofOwner :RAOwner.me}}})))
 Returns a map with tags and queries generated to obtain entities for indicated user:
{:RAEmployee.ofOwner
[:find
?RAEmployee-ofOwner
:in
$
[?user ...]
:where
[?user :app/uuid ?G__33023]
[(= ?G__33024 ?G__33023)]
[?RAOwner-me :RAOwner/internalUserId ?G__33024]
[?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me]]}
 ...
sourceraw docstring

none-rulesclj

(none-rules user-symbol entity-symbol)
source

read-pull-scoping-ednclj

(read-pull-scoping-edn path entities-by-name)
source

reduce-entitiesclj

(reduce-entities scoped-entities)

Takes what 'scope' produces and aggregates all the entity types (so :NOUser.me and :NOUser.peer become :NOUser with unified ids)

Takes what 'scope' produces and aggregates all the entity types (so :NOUser.me and :NOUser.peer become :NOUser with unified ids)
sourceraw docstring

reorder-rulesclj

(reorder-rules remaining-rules final-tags)
(reorder-rules remaining-rules result next-matches final-tags)
source

reverse-scoping-queryclj

(reverse-scoping-query scoping-rule)

Input: Single scoping query (one value of map returned by get-scoping-queries) This query efficiently answers question "As a user, which entities can I access?". Example input: [:find ?RAEmployee-ofOwner :in $ [?user ...] :where [?user :app/uuid ?G__33024] [?RAOwner-me :RAOwner/internalUserId ?G__33024] [?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me]]

Output: Single scoping query. This query efficiently answers question "Which users can access this entity?". Example output: [:find ?user :in $ [?RAEmployee-ofOwner ...] :where [?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me] [?RAOwner-me :RAOwner/internalUserId ?G__33024] [?user :app/uuid ?G__33024]]

Input:
Single scoping query (one value of map returned by get-scoping-queries)
This query efficiently answers question "As a user, which entities can I access?".
Example input:
[:find ?RAEmployee-ofOwner
 :in $ [?user ...]
 :where
 [?user :app/uuid ?G__33024]
 [?RAOwner-me :RAOwner/internalUserId ?G__33024]
 [?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me]]

Output:
Single scoping query.
This query efficiently answers question "Which users can access this entity?".
Example output:
[:find ?user
 :in $ [?RAEmployee-ofOwner ...]
 :where
 [?RAEmployee-ofOwner :RAEmployee/owner ?RAOwner-me]
 [?RAOwner-me :RAOwner/internalUserId ?G__33024]
 [?user :app/uuid ?G__33024]]
sourceraw docstring

s-dependenciesclj

(s-dependencies rule)
source

s-matches?clj

(s-matches? match-tag rule)
source

scopeclj

(scope config snapshot user entities-by-name scoping-defintion push?)
(scope config snapshot user entities-by-name scoping-defintion push? tags)

Takes config map, a snapshot, a user object from DB, entities-by-name and the parsed EDN of rules, push? and optional set of tags to scope. If set of tags to scope is not provided all tags are scoped. A typical invocation looks like this: (scope config (d/db db/conn) user entities-by-name (clojure.edn/read-string (slurp "resources/model/pull-scope.edn")) false) (scope config (d/db db/conn) user entities-by-name (clojure.edn/read-string (slurp "resources/model/pull-scope.edn")) false #{:NOUuser.me :NOLanguage.mine})

Returns a map with db ids, something like: {:NOUser.me #{11122, 1222} :user #{2312312}}

Takes config map, a snapshot, a user object from DB, entities-by-name and the parsed EDN of rules, push? and optional set of tags to scope.
 If set of tags to scope is not provided all tags are scoped.
 A typical invocation looks like this:
(scope config (d/db db/conn) user entities-by-name (clojure.edn/read-string (slurp "resources/model/pull-scope.edn")) false)
(scope config (d/db db/conn) user entities-by-name (clojure.edn/read-string (slurp "resources/model/pull-scope.edn")) false #{:NOUuser.me :NOLanguage.mine})

Returns a map with db ids, something like:
{:NOUser.me #{11122, 1222} :user #{2312312}}
sourceraw docstring

scope-selected-tags-with-treeclj

(scope-selected-tags-with-tree config
                               snapshot
                               user
                               entities-by-name
                               scoping-defintion
                               scoping-sets
                               tags)

Takes: a snapshot, a user object from DB, entities-by-name, parsed (and validated) EDN of scoping rules, scoping-sets, a map of sets indiacting which tags must be scoped per tag calculated with scope_dependency/get-minimum-scoping-sets tags, set of desired tags.

It is advised to calculacte scoping sets once and pass the result. A typical invocation looks like this: (scope-selected-tags-with-tree config (d/db db/conn) user entities-by-name validated-scope scoping-sets #{:RARestaurant.ofOwner})))

Returns a map with db ids, something like: {:RAOwner.me #{11122, 1222} :user #{2312312}}

Takes:
a snapshot,
a user object from DB,
entities-by-name,
parsed (and validated) EDN of scoping rules,
scoping-sets, a map of sets indiacting which tags must be scoped per tag calculated with scope_dependency/get-minimum-scoping-sets
tags, set of desired tags.

It is advised to calculacte scoping sets once and pass the result.
A typical invocation looks like this:
(scope-selected-tags-with-tree config (d/db db/conn) user entities-by-name validated-scope scoping-sets #{:RARestaurant.ofOwner})))

Returns a map with db ids, something like:
{:RAOwner.me #{11122, 1222} :user #{2312312}}
sourceraw docstring

validate-pull-scopeclj

(validate-pull-scope entities-by-name edn)
source

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close