Add /api/schemas endpoint to list all database schemas

This commit is contained in:
Dan Sosedoff 2015-03-30 23:58:04 -05:00
parent 786081aafa
commit f0552ab72d
3 changed files with 18 additions and 0 deletions

12
api.go
View File

@ -55,6 +55,7 @@ func setupRoutes(router *gin.Engine) {
api.GET("/databases", API_GetDatabases) api.GET("/databases", API_GetDatabases)
api.GET("/connection", API_ConnectionInfo) api.GET("/connection", API_ConnectionInfo)
api.GET("/activity", API_Activity) api.GET("/activity", API_Activity)
api.GET("/schemas", API_GetSchemas)
api.GET("/tables", API_GetTables) api.GET("/tables", API_GetTables)
api.GET("/tables/:table", API_GetTable) api.GET("/tables/:table", API_GetTable)
api.GET("/tables/:table/rows", API_GetTableRows) api.GET("/tables/:table/rows", API_GetTableRows)
@ -189,6 +190,17 @@ func API_ExplainQuery(c *gin.Context) {
API_HandleQuery(fmt.Sprintf("EXPLAIN ANALYZE %s", query), c) API_HandleQuery(fmt.Sprintf("EXPLAIN ANALYZE %s", query), c)
} }
func API_GetSchemas(c *gin.Context) {
names, err := dbClient.Schemas()
if err != nil {
c.JSON(400, NewError(err))
return
}
c.JSON(200, names)
}
func API_GetTables(c *gin.Context) { func API_GetTables(c *gin.Context) {
names, err := dbClient.Tables() names, err := dbClient.Tables()

View File

@ -87,6 +87,10 @@ func (client *Client) Databases() ([]string, error) {
return client.fetchRows(PG_DATABASES) return client.fetchRows(PG_DATABASES)
} }
func (client *Client) Schemas() ([]string, error) {
return client.fetchRows(PG_SCHEMAS)
}
func (client *Client) Tables() ([]string, error) { func (client *Client) Tables() ([]string, error) {
return client.fetchRows(PG_TABLES) return client.fetchRows(PG_TABLES)
} }

View File

@ -3,6 +3,8 @@ package main
const ( const (
PG_DATABASES = `SELECT datname FROM pg_database WHERE NOT datistemplate ORDER BY datname ASC` PG_DATABASES = `SELECT datname FROM pg_database WHERE NOT datistemplate ORDER BY datname ASC`
PG_SCHEMAS = `SELECT schema_name FROM information_schema.schemata ORDER BY schema_name ASC`
PG_INFO = `SELECT PG_INFO = `SELECT
session_user session_user
, current_user , current_user