Show table constraints
This commit is contained in:
@@ -179,6 +179,11 @@ func GetTableIndexes(c *gin.Context) {
|
||||
serveResult(res, err, c)
|
||||
}
|
||||
|
||||
func GetTableConstraints(c *gin.Context) {
|
||||
res, err := DbClient.TableConstraints(c.Params.ByName("table"))
|
||||
serveResult(res, err, c)
|
||||
}
|
||||
|
||||
func HandleQuery(query string, c *gin.Context) {
|
||||
rawQuery, err := base64.StdEncoding.DecodeString(query)
|
||||
if err == nil {
|
||||
|
||||
@@ -33,6 +33,7 @@ func SetupRoutes(router *gin.Engine) {
|
||||
api.GET("/tables/:table/rows", GetTableRows)
|
||||
api.GET("/tables/:table/info", GetTableInfo)
|
||||
api.GET("/tables/:table/indexes", GetTableIndexes)
|
||||
api.GET("/tables/:table/constraints", GetTableConstraints)
|
||||
api.GET("/query", RunQuery)
|
||||
api.POST("/query", RunQuery)
|
||||
api.GET("/explain", ExplainQuery)
|
||||
|
||||
@@ -136,6 +136,16 @@ func (client *Client) TableIndexes(table string) (*Result, error) {
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (client *Client) TableConstraints(table string) (*Result, error) {
|
||||
res, err := client.query(statements.PG_TABLE_CONSTRAINTS, table)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (client *Client) Sequences() ([]string, error) {
|
||||
return client.fetchRows(statements.PG_SEQUENCES)
|
||||
}
|
||||
|
||||
@@ -188,6 +188,14 @@ func test_TableIndexes(t *testing.T) {
|
||||
assert.Equal(t, 2, len(res.Rows))
|
||||
}
|
||||
|
||||
func test_TableConstraints(t *testing.T) {
|
||||
res, err := testClient.TableConstraints("editions")
|
||||
|
||||
assert.Equal(t, nil, err)
|
||||
assert.Equal(t, 1, len(res.Columns))
|
||||
assert.Equal(t, 2, len(res.Rows))
|
||||
}
|
||||
|
||||
func test_Sequences(t *testing.T) {
|
||||
res, err := testClient.Sequences()
|
||||
|
||||
@@ -271,6 +279,7 @@ func TestAll(t *testing.T) {
|
||||
test_TableRows(t)
|
||||
test_TableInfo(t)
|
||||
test_TableIndexes(t)
|
||||
test_TableConstraints(t)
|
||||
test_Sequences(t)
|
||||
test_Query(t)
|
||||
test_QueryError(t)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -18,6 +18,16 @@ const (
|
||||
|
||||
PG_TABLE_INDEXES = `SELECT indexname, indexdef FROM pg_indexes WHERE tablename = $1`
|
||||
|
||||
PG_TABLE_CONSTRAINTS = `SELECT
|
||||
pg_get_constraintdef(c.oid, true) as condef
|
||||
FROM pg_constraint c
|
||||
JOIN pg_namespace n ON n.oid = c.connamespace
|
||||
JOIN pg_class cl ON cl.oid = c.conrelid
|
||||
WHERE n.nspname = 'public'
|
||||
AND relname = $1
|
||||
ORDER BY contype desc`
|
||||
|
||||
|
||||
PG_TABLE_INFO = `SELECT
|
||||
pg_size_pretty(pg_table_size($1)) AS data_size
|
||||
, pg_size_pretty(pg_indexes_size($1)) AS index_size
|
||||
|
||||
Reference in New Issue
Block a user