Skip to content
Snippets Groups Projects
Commit 078baa55 authored by Michael Beer's avatar Michael Beer Committed by Christian Haudum
Browse files

register Crate in Metabase

parent 40552271
Branches
Tags
No related merge requests found
(ns metabase.driver.crate
(:require [metabase.driver :as driver]
[metabase.driver.generic-sql :as sql]
[clojure.string :as s])
(:import (clojure.lang Named)))
(defrecord CrateDriver []
Named
(getName [_] "Crate"))
(defn- crate-spec
[{:keys [host port]
:or {host "localhost", port 4300}
:as opts}]
(merge {:classname "io.crate.client.jdbc.CrateDriver" ; must be in classpath
:subprotocol "crate"
:subname (str "//" host ":" port)}
(dissoc opts :host :port)))
(defn- connection-details->spec [_ details]
(-> details crate-spec))
(def CrateISQLDriverMixin
"Implementations of `ISQLDriver` methods for `PostgresDriver`."
(merge (sql/ISQLDriverDefaultsMixin)
{:connection-details->spec connection-details->spec}))
(extend CrateDriver
driver/IDriver
(merge (sql/IDriverSQLDefaultsMixin)
{:details-fields (constantly [{:name "host"
:display-name "Host"
:default "localhost"}
{:name "port"
:display-name "Port"
:type :integer
:default 4300}])
})
sql/ISQLDriver CrateISQLDriverMixin)
(driver/register-driver! :crate (CrateDriver.))
(ns metabase.test.data.crate
"Code for creating / destroying a Crate database from a `DatabaseDefinition`."
(:require metabase.driver.crate
(metabase.test.data [generic-sql :as generic]
[interface :as i]))
(:import metabase.driver.crate.CrateDriver))
(defn- database->connection-details [_]
(merge {:host "localhost"
:port 4300}))
(extend CrateDriver
generic/IGenericSQLDatasetLoader
(merge generic/DefaultsMixin
{})
i/IDatasetLoader
(merge generic/IDatasetLoaderMixin
{:database->connection-details database->connection-details
:engine (constantly :crate)}))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment