69 lines
2.1 KiB
Go
69 lines
2.1 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"github.com/sosedoff/pgweb/pkg/command"
|
|
"github.com/sosedoff/pgweb/pkg/metrics"
|
|
)
|
|
|
|
func SetupMiddlewares(group *gin.RouterGroup) {
|
|
if command.Opts.Cors {
|
|
group.Use(corsMiddleware())
|
|
}
|
|
|
|
group.Use(dbCheckMiddleware())
|
|
}
|
|
|
|
func SetupRoutes(router *gin.Engine) {
|
|
root := router.Group(command.Opts.Prefix)
|
|
|
|
root.GET("/", gin.WrapH(GetHome(command.Opts.Prefix)))
|
|
root.GET("/static/*path", gin.WrapH(GetAssets(command.Opts.Prefix)))
|
|
root.GET("/connect/:resource", ConnectWithBackend)
|
|
|
|
api := root.Group("/api")
|
|
SetupMiddlewares(api)
|
|
|
|
if command.Opts.Sessions {
|
|
api.GET("/sessions", GetSessions)
|
|
}
|
|
|
|
api.GET("/info", GetInfo)
|
|
api.POST("/connect", Connect)
|
|
api.POST("/disconnect", Disconnect)
|
|
api.POST("/switchdb", SwitchDb)
|
|
api.GET("/databases", GetDatabases)
|
|
api.GET("/connection", GetConnectionInfo)
|
|
api.GET("/server_settings", GetServerSettings)
|
|
api.GET("/activity", GetActivity)
|
|
api.GET("/schemas", GetSchemas)
|
|
api.GET("/objects", GetObjects)
|
|
api.GET("/tables/:table", GetTable)
|
|
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("/tables_stats", GetTablesStats)
|
|
api.GET("/functions/:id", GetFunction)
|
|
api.GET("/query", RunQuery)
|
|
api.POST("/query", RunQuery)
|
|
api.GET("/explain", ExplainQuery)
|
|
api.POST("/explain", ExplainQuery)
|
|
api.GET("/analyze", AnalyzeQuery)
|
|
api.POST("/analyze", AnalyzeQuery)
|
|
api.GET("/history", GetHistory)
|
|
api.GET("/bookmarks", GetBookmarks)
|
|
api.GET("/export", DataExport)
|
|
api.GET("/local_queries", requireLocalQueries(), GetLocalQueries)
|
|
api.GET("/local_queries/:id", requireLocalQueries(), RunLocalQuery)
|
|
api.POST("/local_queries/:id", requireLocalQueries(), RunLocalQuery)
|
|
}
|
|
|
|
func SetupMetrics(engine *gin.Engine) {
|
|
if command.Opts.MetricsEnabled && command.Opts.MetricsAddr == "" {
|
|
// NOTE: We're not supporting the MetricsPath CLI option here to avoid the route conflicts.
|
|
engine.GET("/metrics", gin.WrapH(metrics.NewHandler()))
|
|
}
|
|
}
|