(apply-kv-arg model₁ resolved-query₂ k₃ v)
Merge a key-value pair into a query
, presumably a map. What this means depends on
the [[toucan2.protocols/dispatch-value]] of query
-- for a plain map, this is given :type
metadata at some point
for the toucan2.map-backend/default-backend
.
Example: the default Honey SQL backend, applies k
and v
as a :where
condition:
(apply-kv-arg :default {} :k :v)
;; =>
{:where [:= :k :v]}
You can add new implementations of this method to special behaviors for support arbitrary keys, or to support new
query backends. :toucan/pk
support is implemented this way.
apply-kv-arg is defined in toucan2.query
(toucan2/query.clj:125).
It caches methods using a methodical.impl.cache.watching.WatchingCache
.
It uses the method combination methodical.impl.combo.threaded.ThreadingMethodCombination
with the threading strategy :thread-last
.
It uses the dispatcher methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher
with hierarchy #'clojure.core/global-hierarchy
and prefs {}
.
The default value is :default
.
It uses the method table methodical.impl.method_table.standard.StandardMethodTable
.
These primary methods are known:
[:default clojure.lang.IPersistentMap :default]
, defined in toucan2.query
(toucan2/query.clj:151)
It has the following documentation:
Default implementation for maps. This adds :type
metadata to the map (from [[map/backend]]) and recurses,
ultimately handing off to the map backend's implementation.
See toucan2.map-backend.honeysql2
for the Honey SQL-specific impl for this.
[:default :toucan.map-backend/honeysql2 :default]
, defined in toucan2.map-backend.honeysql2
(toucan2/map_backend/honeysql2.clj:33)
It has the following documentation:
Apply key-value args to a Honey SQL 2 query map.
These aux methods are known:
:around
methods:
[:default :default :toucan/pk]
, defined in toucan2.query
(toucan2/query.clj:216)
It has the following documentation:
Implementation for handling key-value args for :toucan/pk
.
This is an :around
so we can intercept the normal handler. This 'unpacks' the PK and ultimately uses the normal
calls to apply-kv-arg
.
Merge a key-value pair into a `query`, presumably a map. What this means depends on the [[toucan2.protocols/dispatch-value]] of `query` -- for a plain map, this is given `:type` metadata at some point for the [[toucan2.map-backend/default-backend]]. Example: the default Honey SQL backend, applies `k` and `v` as a `:where` condition: ```clj (apply-kv-arg :default {} :k :v) ;; => {:where [:= :k :v]} ``` You can add new implementations of this method to special behaviors for support arbitrary keys, or to support new query backends. `:toucan/pk` support is implemented this way. apply-kv-arg is defined in [[toucan2.query]] (toucan2/query.clj:125). It caches methods using a `methodical.impl.cache.watching.WatchingCache`. It uses the method combination `methodical.impl.combo.threaded.ThreadingMethodCombination` with the threading strategy `:thread-last`. It uses the dispatcher `methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher` with hierarchy `#'clojure.core/global-hierarchy` and prefs `{}`. The default value is `:default`. It uses the method table `methodical.impl.method_table.standard.StandardMethodTable`. These primary methods are known: * `[:default clojure.lang.IPersistentMap :default]`, defined in [[toucan2.query]] (toucan2/query.clj:151) It has the following documentation: Default implementation for maps. This adds `:type` metadata to the map (from [[map/backend]]) and recurses, ultimately handing off to the map backend's implementation. See [[toucan2.map-backend.honeysql2]] for the Honey SQL-specific impl for this. * `[:default :toucan.map-backend/honeysql2 :default]`, defined in [[toucan2.map-backend.honeysql2]] (toucan2/map_backend/honeysql2.clj:33) It has the following documentation: Apply key-value args to a Honey SQL 2 query map. These aux methods are known: `:around` methods: * `[:default :default :toucan/pk]`, defined in [[toucan2.query]] (toucan2/query.clj:216) It has the following documentation: Implementation for handling key-value args for `:toucan/pk`. This is an `:around` so we can intercept the normal handler. This 'unpacks' the PK and ultimately uses the normal calls to [[apply-kv-arg]].
(apply-kv-args model query kv-args)
Convenience. Merge a map of kv-args
into a resolved query
with repeated calls to apply-kv-arg
.
Convenience. Merge a map of `kv-args` into a resolved `query` with repeated calls to [[apply-kv-arg]].
(parse-args query-type₁ unparsed-args)
parse-args
takes a sequence of unparsed args passed to something like toucan2.select/select
and parses them into
a parsed args map. The default implementation uses [[clojure.spec.alpha]] to parse the args according to args-spec
.
These keys are commonly returned by several of the different implementations parse-args
, and other tooling is
build to leverage them:
:modelable
-- usually the first of the unparsed-args
, this is the thing that should get resolved to a model
with toucan2.model/resolve-model
.
:queryable
-- something that can be resolved to a query, for example a map or integer or 'named query' keyword.
The resolved query is ultimately combined with other parsed args and built into something like a Honey SQL map, then
compiled to something like SQL.
:kv-args
-- map of key-value pairs. When [[build]] builds a query, it calls apply-kv-arg
for each of the
key-value pairs. The default behavior is to append a Honey SQL :where
clause based on the pair; but you can
customize the behavior for specific keywords to do other things -- :toucan/pk
is one such example.
:columns
-- for things that return instances, :columns
is a sequence of columns to return. These are commonly
specified by wrapping the modelable in a [modelable & columns]
vector.
parse-args is defined in toucan2.query
(toucan2/query.clj:92).
It caches methods using a methodical.impl.cache.watching.WatchingCache
.
It uses the method combination methodical.impl.combo.threaded.ThreadingMethodCombination
with the threading strategy :thread-last
.
It uses the dispatcher methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher
with hierarchy #'clojure.core/global-hierarchy
and prefs {}
.
The default value is :default
.
It uses the method table methodical.impl.method_table.standard.StandardMethodTable
.
These primary methods are known:
:default
, defined in toucan2.query
(toucan2/query.clj:117)
It has the following documentation:
The default implementation calls parse-args-with-spec
with the :toucan2.query/default-args
spec.
:toucan.query-type/insert.*
, defined in toucan2.insert
(toucan2/insert.clj:32)
It has the following documentation:
Default args parsing method for toucan2.insert/insert!
. Uses the spec :toucan2.insert/args
.
`parse-args` takes a sequence of unparsed args passed to something like [[toucan2.select/select]] and parses them into a parsed args map. The default implementation uses [[clojure.spec.alpha]] to parse the args according to `args-spec`. These keys are commonly returned by several of the different implementations `parse-args`, and other tooling is build to leverage them: * `:modelable` -- usually the first of the `unparsed-args`, this is the thing that should get resolved to a model with [[toucan2.model/resolve-model]]. * `:queryable` -- something that can be resolved to a query, for example a map or integer or 'named query' keyword. The resolved query is ultimately combined with other parsed args and built into something like a Honey SQL map, then compiled to something like SQL. * `:kv-args` -- map of key-value pairs. When [[build]] builds a query, it calls [[apply-kv-arg]] for each of the key-value pairs. The default behavior is to append a Honey SQL `:where` clause based on the pair; but you can customize the behavior for specific keywords to do other things -- `:toucan/pk` is one such example. * `:columns` -- for things that return instances, `:columns` is a sequence of columns to return. These are commonly specified by wrapping the modelable in a `[modelable & columns]` vector. parse-args is defined in [[toucan2.query]] (toucan2/query.clj:92). It caches methods using a `methodical.impl.cache.watching.WatchingCache`. It uses the method combination `methodical.impl.combo.threaded.ThreadingMethodCombination` with the threading strategy `:thread-last`. It uses the dispatcher `methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher` with hierarchy `#'clojure.core/global-hierarchy` and prefs `{}`. The default value is `:default`. It uses the method table `methodical.impl.method_table.standard.StandardMethodTable`. These primary methods are known: * `:default`, defined in [[toucan2.query]] (toucan2/query.clj:117) It has the following documentation: The default implementation calls [[parse-args-with-spec]] with the `:toucan2.query/default-args` spec. * `:toucan.query-type/insert.*`, defined in [[toucan2.insert]] (toucan2/insert.clj:32) It has the following documentation: Default args parsing method for [[toucan2.insert/insert!]]. Uses the spec `:toucan2.insert/args`.
(parse-args-with-spec query-type spec unparsed-args)
Parse unparsed-args
for query-type
with the given spec
. See documentation for parse-args
for more details.
Parse `unparsed-args` for `query-type` with the given `spec`. See documentation for [[parse-args]] for more details.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close