diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn index 9b658c45e1eb8d4058a3e32de3ac4457ef3aa3b1..7b66d57d88b4b95b513da252cebe928b3ca19900 100644 --- a/.clj-kondo/config.edn +++ b/.clj-kondo/config.edn @@ -14,10 +14,60 @@ (clojure.core.logic/fresh) (clojure.core.logic/matcha) (clojure.core.logic/run)]} - ;; TODO: clj-kondo should have a way to disable this in certain macro calls like - ;; metabase.mbql.util.match/replace :unexpected-recur {:level :off} - :unused-referred-var {:exclude {compojure.core [GET DELETE POST PUT]}}} + :unused-referred-var {:exclude {compojure.core [GET DELETE POST PUT]}} + :deprecated-var {:exclude {metabase.query-processor.util/normalize-token + {:namespaces ["metabase.*"]} + metabase.driver/supports? + {:namespaces ["metabase.*"]} + metabase.driver/current-db-time + {:namespaces ["metabase.*"]} + metabase.driver.common/current-db-time-native-query + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.common/current-db-time-date-formatters + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql-jdbc.execute.old-impl/read-column + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.common/first-successful-parse + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.common/ThreadSafeSimpleDateFormat + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.common/create-db-time-formatters + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.common/current-db-time + {:namespaces ["metabase.*"]} + metabase.driver.sql.query-processor.deprecated/*field-options* + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql.query-processor.deprecated/*source-query* + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql.query-processor.deprecated/field->identifier + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql.query-processor.deprecated/field->alias + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql.query-processor.deprecated/prefix-field-alias + {:namespaces ["metabase\\.driver.*"]} + metabase.query-processor.middleware.resolve-joins/maybe-resolve-source-table + {:namespaces ["metabase.*"]} + metabase.driver.sql-jdbc.execute.old-impl/set-timezone-sq + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql-jdbc.execute.old-impl/set-timezone-sql + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql.query-processor.deprecated/*table-alias* + {:namespaces ["metabase\\.driver.*"]} + metabase.public-settings.premium-features/enable-enhancements? + {:namespaces ["metabase\\.models.*"]} + metabase.driver.sql.query-processor.deprecated/escape-alias + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql-jdbc.execute/set-time-zone-if-supported! + {:namespaces ["metabase\\.driver.*"]} + metabase.driver.sql-jdbc.sync.interface/syncable-schemas + {:namespaces ["metabase\\.driver.*"]} + metabase.query-processor/query->preprocessed + {:namespaces ["metabase.*"]} + schema.core/either + {:namespaces ["metabase.*"]} + schema.core/both + {:namespaces ["metabase.*"]}}}} :lint-as {metabase.api.common/let-404 clojure.core/let metabase.db.data-migrations/defmigration clojure.core/def metabase.query-processor.error-type/deferror clojure.core/def @@ -39,7 +89,10 @@ potemkin/defrecord+ clojure.core/defrecord potemkin.types/deftype+ clojure.core/deftype potemkin/deftype+ clojure.core/deftype - clojurewerkz.quartzite.jobs/defjob clojure.core/defn} + clojurewerkz.quartzite.jobs/defjob clojure.core/defn + honeysql.util/defalias clojure.core/def + honeysql.helpers/defhelper clj-kondo.lint-as/def-catch-all + clojure.core.logic/defne clj-kondo.lint-as/def-catch-all} :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 @@ -52,6 +105,7 @@ metabase.api.common/defendpoint-async hooks.metabase.api.common/defendpoint} :macroexpand {metabase.query-processor.streaming/streaming-response metabase.query-processor.streaming/streaming-response + metabase.api.common/define-routes macros.metabase.api.common/define-routes toucan.models/defmodel toucan.models/defmodel clojurewerkz.quartzite.jobs/build macros.quartz/build-job clojurewerkz.quartzite.triggers/build macros.quartz/build-trigger diff --git a/.clj-kondo/macros/metabase/api/common.clj b/.clj-kondo/macros/metabase/api/common.clj new file mode 100644 index 0000000000000000000000000000000000000000..99c939def063727f0d7080dfc3c68bb7e907d351 --- /dev/null +++ b/.clj-kondo/macros/metabase/api/common.clj @@ -0,0 +1,5 @@ +(ns macros.metabase.api.common) + +(defmacro define-routes [& args] + `(do (def ~'routes) + ~@args)) diff --git a/shared/src/metabase/mbql/schema.cljc b/shared/src/metabase/mbql/schema.cljc index 3546311b3c7256589da4e77a9a5ffe13b48f21c5..d03676d3cb675f780f68118a39ec34faa56b4e79 100644 --- a/shared/src/metabase/mbql/schema.cljc +++ b/shared/src/metabase/mbql/schema.cljc @@ -1,6 +1,6 @@ (ns metabase.mbql.schema "Schema for validating a *normalized* MBQL query. This is also the definitive grammar for MBQL, wow!" - (:refer-clojure :exclude [count distinct min max + - / * and or not not-empty = < > <= >= time case concat replace]) + (:refer-clojure :exclude [count distinct min max + - / * and or not not-empty = < > <= >= time case concat replace abs]) #?@ (:clj [(:require diff --git a/src/metabase/api/user.clj b/src/metabase/api/user.clj index c256024af68eefc2e362dbf83e040a87a373bb93..597dc13d90fbf0dd0464f478b4ccf0c9d8538eff 100644 --- a/src/metabase/api/user.clj +++ b/src/metabase/api/user.clj @@ -1,6 +1,7 @@ (ns metabase.api.user "/api/user endpoints" (:require [cemerick.friend.credentials :as creds] + [clojure.string :as str] [compojure.core :refer [DELETE GET POST PUT]] [honeysql.helpers :as hh] [metabase.analytics.snowplow :as snowplow] @@ -82,7 +83,7 @@ "active" [:= :is_active true] [:= :is_active true]))) -(defn- wildcard-query [query] (str "%" (clojure.string/lower-case query) "%")) +(defn- wildcard-query [query] (str "%" (str/lower-case query) "%")) (defn- query-clause "Honeysql clause to shove into user query if there's a query"