Skip to content
Snippets Groups Projects
Commit 399c16cf authored by Allen Gilliland's avatar Allen Gilliland
Browse files

create a new endpoint at /api/meta/db/:id/metadata which contains all of the...

create a new endpoint at /api/meta/db/:id/metadata which contains all of the metadata for the database.
parent e652397f
No related branches found
No related tags found
No related merge requests found
......@@ -83,6 +83,14 @@
(write-check Database id)
(cascade-delete Database :id id))
(defendpoint GET "/:id/metadata"
"Get metadata about a `Database`, including all of its `Tables` and `Fields`.
Returns DB, fields, field FKs, and field values."
[id]
(->404 (Database id)
read-check
(hydrate [:tables [:fields :target :values]])))
(defendpoint GET "/:id/autocomplete_suggestions"
"Return a list of autocomplete suggestions for a given PREFIX.
This is intened for use with the ACE Editor when the User is typing raw SQL.
......
......@@ -2,7 +2,8 @@
(:require [korma.core :refer :all, :exclude [defentity update]]
[metabase.api.common :refer [*current-user*]]
[metabase.db :refer :all]
[metabase.models.interface :refer :all]))
[metabase.models.interface :refer :all]
[metabase.util :as u]))
(defrecord DatabaseInstance []
;; preserve normal IFn behavior so things like ((sel :one Database) :id) work correctly
......@@ -24,8 +25,10 @@
(types :details :json, :engine :keyword)
timestamped]
(post-select [_ db]
(map->DatabaseInstance db))
(post-select [_ {:keys [id] :as database}]
(map->DatabaseInstance
(u/assoc* database
:tables (delay (sel :many 'metabase.models.table/Table :db_id id :active true (order :display_name :ASC))))))
(pre-cascade-delete [_ {:keys [id] :as database}]
(cascade-delete 'metabase.models.table/Table :db_id id)))
......
......@@ -4,7 +4,7 @@
[metabase.db :refer :all]
(metabase.models [common :as common]
[database :refer [Database]]
[field-values :refer [field-should-have-field-values? create-field-values-if-needed]]
[field-values :refer [FieldValues field-should-have-field-values? create-field-values-if-needed]]
[foreign-key :refer [ForeignKey]]
[hydrate :refer [hydrate]]
[interface :refer :all])
......@@ -91,7 +91,7 @@
(contains? field :special_type))
(create-field-values-if-needed (sel :one [this :id :table_id :base_type :special_type :field_type] :id id))))
(post-select [this {:keys [table_id parent_id] :as field}]
(post-select [this {:keys [id table_id parent_id] :as field}]
(map->FieldInstance
(u/assoc* field
:table (delay (sel :one 'metabase.models.table/Table :id table_id))
......@@ -100,6 +100,7 @@
:parent (when parent_id
(delay (this parent_id)))
:children (delay (sel :many this :parent_id (:id field)))
:values (delay (sel :many [FieldValues :field_id :values] :field_id id))
:qualified-name-components (delay (qualified-name-components <>))
:qualified-name (delay (apply str (interpose "." @(:qualified-name-components <>)))))))
......
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