| |
|
| (ns metabase.api.user-key-value
(:require
[malli.core :as mc]
[malli.experimental.time.transform :as mett]
[malli.transform :as mtx]
[metabase.api.common :as api]
[metabase.api.macros :as api.macros]
[metabase.lib.schema.literal]
[metabase.models.user-key-value :as user-key-value]
[metabase.models.user-key-value.types :as types]
[metabase.util.malli.schema :as ms])) |
|
| (api.macros/defendpoint :put "/namespace/:namespace/key/:key"
"Upsert a KV-pair for the user"
[{nmspace :namespace, k :key} :- [:map
[:key ms/NonBlankString]
[:namespace ms/NonBlankString]]
_query-params
{v :value, expires-at :expires_at} :- [:map
[:value {:optional true} :any]
[:expires_at {:optional true} [:maybe :metabase.lib.schema.literal/string.datetime]]]]
(try
(user-key-value/put! api/*current-user-id* (mc/coerce ::types/user-key-value
{:key k
:namespace nmspace
:value v
:expires-at expires-at}
(mtx/transformer
(mtx/default-value-transformer)
(mett/time-transformer)
{:name :api-request})))
(catch Exception e
(when (= (:type (ex-data e))
::mc/coercion)
(api/check-400 false))
(throw e)))) |
|
| (api.macros/defendpoint :get "/namespace/:namespace/key/:key"
"Get a value for the user"
[{nmspace :namespace, k :key} :- [:map
[:key ms/NonBlankString]
[:namespace ms/NonBlankString]]]
(user-key-value/retrieve api/*current-user-id* nmspace k)) |
|
| (api.macros/defendpoint :get "/namespace/:namespace"
"Returns all KV pairs in a given namespace for the current user"
[{nmspace :namespace} :- [:map
[:namespace ms/NonBlankString]]]
(user-key-value/retrieve-all api/*current-user-id* nmspace)) |
|
| (api.macros/defendpoint :delete "/namespace/:namespace/key/:key"
"Deletes a KV-pair for the user"
[{nmspace :namespace, k :key}]
(user-key-value/delete! api/*current-user-id* nmspace k)) |
| | |