Skip to content
Snippets Groups Projects
Unverified Commit 0499ddfe authored by Eric Dallo's avatar Eric Dallo Committed by GitHub
Browse files

Add custom hooks for some of metabase macros (#17964)

parent c8b22c46
No related branches found
No related tags found
No related merge requests found
{:linters {:unresolved-symbol {:exclude [schema= re=]}}
:hooks {:analyze-call {metabase.test.data/dataset hooks.metabase.test.data/dataset
metabase.test/dataset hooks.metabase.test.data/dataset
metabase.test.data/$ids hooks.metabase.test.data/$ids
metabase.test/$ids hooks.metabase.test.data/$ids
metabase.test.data/mbql-query hooks.metabase.test.data/$ids
metabase.test/mbql-query hooks.metabase.test.data/$ids
metabase.test.data/run-mbql-query hooks.metabase.test.data/$ids
metabase.test/run-mbql-query hooks.metabase.test.data/$ids}}}
(ns hooks.metabase.test.data
(:require
[clj-kondo.hooks-api :as hooks]
[clojure.string :as string]
[clojure.walk :as walk]))
(defn dataset [{:keys [node]}]
(let [[dataset & body] (rest (:children node))]
{:node (with-meta
(hooks/list-node
(list*
(hooks/token-node 'clojure.test/testing)
(hooks/string-node (str dataset))
body))
(meta dataset))}))
(defn $ids [{:keys [node]}]
(let [[table-name & body] (rest (:children node))
unused-node (hooks/token-node '_)
vars (atom #{})
_ (walk/postwalk (fn [node]
(when (hooks/token-node? node)
(let [str-node (str (hooks/sexpr node))]
(when (or (string/starts-with? str-node "$")
(string/starts-with? str-node "!")
(string/starts-with? str-node "&")
(string/starts-with? str-node "*")
(string/starts-with? str-node "%"))
(swap! vars conj node))))
node)
body)
nil-bindings (vec (interpose nil @vars))
unused-bindings (vec (interpose unused-node @vars))
final-bindings (concat [table-name nil
unused-node table-name]
(if (seq nil-bindings)
(conj nil-bindings nil)
[])
(if (seq unused-bindings)
(conj (next unused-bindings)
(first unused-bindings)
unused-node)
[]))]
{:node (with-meta
(hooks/list-node
(list*
(hooks/token-node 'let)
(hooks/vector-node (vec final-bindings))
body))
(meta body))}))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment