(ns metabase.search.appdb.specialization.api
  (:require
   [metabase.db :as mdb]))
(defn- db-type [& _] (mdb/db-type))

The HoneySQL definition for the shape of the index table for this appdb.

(defmulti table-schema
  {:arglists '([base-schema])}
  db-type)

Any SQL statements that should be issued after the table is created, e.g. to create indexes.

(defmulti post-create-statements
  {:arglists '([unique-prefix table-name])}
  db-type)

Generate the basic shape of the index table query, to be augmented with rankers and filters.

(defmulti base-query
  {:arglists '([table-name search-term search-ctx select-items])}
  db-type)

Insert or update multiple entries in the index table.

(defmulti batch-upsert!
  {:arglists '([table-name entries])}
  db-type)

Populate additional fields only present for this database driver's index table

(defmulti extra-entry-fields
  {:arglists '([entity])}
  db-type)

The HoneySQL expression used to calculate a text score for the given entry.

(defmulti text-score
  {:arglists '([search-ctx])}
  db-type)

Calculate the given p-value of view counts for each search model

(defmulti view-count-percentile-query
  {:arglists '([index-table p-value])}
  db-type)