(ns metabase-enterprise.llm.api
  (:require
   [metabase-enterprise.llm.tasks.describe-dashboard :refer [describe-dashboard]]
   [metabase-enterprise.llm.tasks.describe-question :refer [describe-question]]
   [metabase.analyze.query-results :as qr]
   [metabase.api.macros :as api.macros]
   [metabase.util.malli.schema :as ms]))
(api.macros/defendpoint :post "/card/summarize"
  "Summarize a question."
  [_route-params
   _query-params
   body :- [:map
            [:dataset                {:optional true} [:maybe :boolean]]
            [:dataset_query          ms/Map]
            [:parameters             {:optional true} [:maybe [:sequential ms/Parameter]]]
            [:parameter_mappings     {:optional true} [:maybe [:sequential ms/ParameterMapping]]]
            [:description            {:optional true} [:maybe ms/NonBlankString]]
            [:display                ms/NonBlankString]
            [:visualization_settings ms/Map]
            [:collection_id          {:optional true} [:maybe ms/PositiveInt]]
            [:collection_position    {:optional true} [:maybe ms/PositiveInt]]
            [:result_metadata        {:optional true} [:maybe qr/ResultsMetadata]]
            [:cache_ttl              {:optional true} [:maybe ms/PositiveInt]]]]
  ;; check that we have permissions to run the query that we're trying to save
                                        ;(check-data-permissions-for-query dataset_query)
  {:summary (describe-question body)})
(api.macros/defendpoint :post "/dashboard/summarize/:id"
  "Provide a summary of a dashboard."
  [{:keys [id]} :- [:map
                    [:id ms/PositiveInt]]]
  {:summary (describe-dashboard id)})