Tools for introspecting and working with the test data loading code, especially the SQL JDBC reducible chunks and
(dev.debug-test-data/jdbc-insert-rows-dml-statements
:mysql
'metabase.driver.sql-jdbc.sync.describe-table-test/json-int-turn-string
"jsonwithpk")
;; =>
[["INSERT INTO | (ns dev.debug-test-data (:require [medley.core :as m] [metabase.driver :as driver] [metabase.test :as mt] [metabase.test.data.impl :as data.impl] [metabase.test.data.interface :as tx] [metabase.test.data.sql-jdbc.load-data :as sql-jdbc.load-data] [metabase.test.data.sql.ddl :as ddl] [metabase.util.malli :as mu])) |
(mu/defn ->dbdef :- [:map [:database-name :string]]
"Coerce something to a Database Definition. Can resolve string symbols from the current namespace or
from [[metabase.test.data.dataset-definitions]]."
[dbdeffable]
(if (symbol? dbdeffable)
(->dbdef (data.impl/resolve-dataset-definition (symbol (ns-name *ns*)) dbdeffable))
(tx/get-dataset-definition dbdeffable))) | |
(mu/defn ->tabledef :- [:map [:table-name :string]]
"Coerce something to a Table Definition. You can pass in a string table name to find the matching table from a
Database Definition."
[dbdeffable tabledeffable]
(cond
(and (map? tabledeffable)
(:table-name tabledeffable))
tabledeffable
(string? tabledeffable)
(let [dbdef (->dbdef dbdeffable)]
(m/find-first #(= (:table-name %) tabledeffable)
(:table-definitions dbdef))))) | |
Check whether (dataset-already-loaded? :redshift 'test-data) | (defn dataset-already-loaded? [driver dbdeffable] (tx/dataset-already-loaded? driver (->dbdef dbdeffable))) |
Return a sequence of DDL statements used to create the database itself for a Database Definition for | (defn jdbc-create-db-ddl-statements [driver dbdeffable] (ddl/create-db-ddl-statements driver (->dbdef dbdeffable))) |
Return a sequence of DDL statements used to create the tables in a Database Definition for | (defn jdbc-create-table-ddl-statements [driver dbdeffable] (ddl/create-db-tables-ddl-statements driver (->dbdef dbdeffable))) |
Generate reducible chunks of rows from a table definition for a given | (defn jdbc-reducible-chunks
[driver dbdeffable tabledeffable]
(let [dbdef (->dbdef dbdeffable)
tabledef (->tabledef dbdef tabledeffable)]
(#'sql-jdbc.load-data/reducible-chunks driver dbdef tabledef))) |
HoneySQL table identifier form for a table definition for | (defn table-identifier
[driver dbdeffable tabledeffable]
(let [dbdef (->dbdef dbdeffable)
tabledef (->tabledef dbdef tabledeffable)]
(#'sql-jdbc.load-data/table-identifier driver dbdef tabledef))) |
Reducible sequence of | (defn reducible-jdbc-insert-rows-dml-statements
[driver dbdeffable tabledeffable]
(let [dbdef (->dbdef dbdeffable)
tabledef (->tabledef dbdef tabledeffable)
table-identifier (table-identifier driver dbdef tabledef)]
(eduction
(mapcat (fn [rows]
(ddl/insert-rows-dml-statements driver table-identifier rows)))
(jdbc-reducible-chunks driver dbdef tabledef)))) |
Generate the | (defn jdbc-insert-rows-dml-statements [driver dbdeffable tabledeffable] (into [] (reducible-jdbc-insert-rows-dml-statements driver dbdeffable tabledeffable))) |
Like [[metabase.test/db]] but takes (db :redshift 'test-data) | (defn db
([driver]
(db driver 'test-data))
([driver dbdeffable]
(driver/with-driver driver
(data.impl/do-with-dataset
(->dbdef dbdeffable)
mt/db)))) |