Skip to content
Snippets Groups Projects
Unverified Commit 5fcceaad authored by Cam Saul's avatar Cam Saul Committed by GitHub
Browse files

`metabase.metabot` API namespace (#42468)

* Squashed commit

* Update config

* Backport the kondo ignore stuff from other PR.

* Metabot API namespace
parent 1bce4cb6
No related merge requests found
......@@ -175,7 +175,7 @@
metabase.db.query ; TODO this is mostly util stuff like `metabase.db.query/query` that we don't even need anymore.
metabase.db.setup} ; TODO these are only calling `metabase.db.setup/setup-db!` and there's a slightly different version in `metabase.db`
metabase.domain-entities #{metabase.domain-entities.core
metabase.domain-entities.specs} ; TODO -- consolidate these into a real API namespace.
metabase.domain-entities.specs} ; TODO -- these should probably be combined into the `metabase.transforms` module, that's the only place that uses them.
metabase.driver :any ; TODO -- 19 namespaces!!!! CRY
metabase.email #{metabase.email
metabase.email.messages} ; TODO -- consolidate these into a real API namespace.
......@@ -193,9 +193,7 @@
metabase.legacy-mbql.util} ; TODO -- consolidate these into a real API namespace.
metabase.lib :any ; TODO -- :cry: 34 externally referenced namespaces, but maybe half of them are schema namespaces which technically don't need to be required.
metabase.logger #{metabase.logger}
metabase.metabot #{metabase.metabot
metabase.metabot.feedback
metabase.metabot.util} ; TODO -- consolidate these into a real API namespace.
metabase.metabot #{metabase.metabot}
metabase.models :any ; TODO -- scream, 62 namespaces used elsewhere, but to be fair a lot of these don't *need* to be required.
metabase.moderation #{metabase.moderation}
metabase.native-query-analyzer #{metabase.native-query-analyzer}
......
......@@ -298,7 +298,7 @@
:when (not (contains? clj-kondo-ignore :metabase/ns-module-checker))
:let [required-namespace (hooks/sexpr node)
required-module (module required-namespace)]
;; ignore stuff not in a module i.e. non-Metabase stuff.
;; ignore stuff not in a module i.e. non-Metabase stuff.
:when required-module
:let [in-current-module? (= required-module current-module)]
:when (not in-current-module?)
......
......@@ -5,8 +5,6 @@
[compojure.core :refer [POST]]
[metabase.api.common :as api]
[metabase.metabot :as metabot]
[metabase.metabot.feedback :as metabot-feedback]
[metabase.metabot.util :as metabot-util]
[metabase.models :refer [Card Database]]
[metabase.util.log :as log]
[metabase.util.malli.schema :as ms]
......@@ -17,7 +15,7 @@
(defn- check-database-support
"Do a preliminary check to ensure metabot will work. Throw an exception if not."
[database-id]
(when-not (metabot-util/supported? database-id)
(when-not (metabot/supported? database-id)
(throw
(let [message "Metabot is not supported for this database type."]
(ex-info
......@@ -59,7 +57,7 @@
question)
(let [model (api/check-404 (t2/select-one Card :id model-id :type :model))
_ (check-database-support (:database_id model))
context {:model (metabot-util/denormalize-model model)
context {:model (metabot/denormalize-model model)
:user_prompt question
:prompt_task :infer_sql}
dataset (infer-sql-or-throw context question)]
......@@ -76,7 +74,7 @@
question)
(let [{:as database} (api/check-404 (t2/select-one Database :id database-id))
_ (check-database-support (:id database))
context {:database (metabot-util/denormalize-database database)
context {:database (metabot/denormalize-database database)
:user_prompt question
:prompt_task :infer_model}]
(if-some [model (metabot/infer-model context)]
......@@ -106,7 +104,7 @@
question)
(let [{:as database} (api/check-404 (t2/select-one Database :id database-id))
_ (check-database-support (:id database))
context {:database (metabot-util/denormalize-database database)
context {:database (metabot/denormalize-database database)
:user_prompt question
:prompt_task :infer_native_sql}]
(metabot/infer-native-sql-query context)))
......@@ -114,7 +112,7 @@
(api/defendpoint POST "/feedback"
"Record feedback on metabot results."
[:as {feedback :body}]
(if-some [stored-feedback (metabot-feedback/submit-feedback feedback)]
(if-some [stored-feedback (metabot/submit-feedback feedback)]
{:feedback stored-feedback
:message "Thanks for your feedback"}
(throw
......
......@@ -5,12 +5,25 @@
[cheshire.core :as json]
[metabase.lib.native :as lib-native]
[metabase.metabot.client :as metabot-client]
[metabase.metabot.feedback :as metabot-feedback]
[metabase.metabot.settings :as metabot-settings]
[metabase.metabot.util :as metabot-util]
[metabase.models :refer [Table]]
[metabase.util.log :as log]
[potemkin :as p]
[toucan2.core :as t2]))
(comment metabot-feedback/keep-me
metabot-util/keep-me)
(p/import-vars
[metabot-feedback
submit-feedback]
[metabot-util
denormalize-database
denormalize-model
supported?])
(defn infer-viz
"Determine an 'interesting' visualization for this data."
[{sql :sql :as context}]
......
(ns metabase.metabot.feedback
(:require [cheshire.core :as json]
[clj-http.client :as http]
[metabase.analytics.snowplow :as snowplow]
[metabase.api.common :as api]
[metabase.metabot.settings :as metabot-settings]))
(:require
[cheshire.core :as json]
[clj-http.client :as http]
[metabase.analytics.snowplow :as snowplow]
[metabase.api.common :as api]
[metabase.metabot.settings :as metabot-settings]))
(def ^:private snowplow-keys [:entity_type :prompt_template_versions :feedback_type])
(def ^:private feedback-keys (into snowplow-keys [:prompt :sql]))
......
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