mirror of
https://github.com/versia-pub/versia-go.git
synced 2025-12-06 14:28:20 +01:00
feat: add healthcheck endpoint
This commit is contained in:
parent
f619a0b8af
commit
106a20a922
|
|
@ -1,3 +1,3 @@
|
|||
package ent
|
||||
|
||||
//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature schema/snapshot --feature sql/upsert ./schema
|
||||
//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature schema/snapshot --feature sql/upsert --template ping.tmpl --template get_client.tmpl ./schema
|
||||
|
|
|
|||
9
ent/get_client.go
Normal file
9
ent/get_client.go
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// Code generated by ent, DO NOT EDIT.
|
||||
|
||||
package ent
|
||||
|
||||
import "entgo.io/ent/dialect/sql"
|
||||
|
||||
func (c *Client) GetClient() *sql.Driver {
|
||||
return c.driver.(*sql.Driver)
|
||||
}
|
||||
12
ent/get_client.tmpl
Normal file
12
ent/get_client.tmpl
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{{/* gotype: entgo.io/ent/entc/gen.Graph */}}
|
||||
|
||||
{{ define "get_client" }}
|
||||
|
||||
{{ $pkg := base $.Config.Package }}
|
||||
{{ template "header" $ }}
|
||||
|
||||
func (c *Client) GetClient() *sql.Driver {
|
||||
return c.driver.(*sql.Driver)
|
||||
}
|
||||
|
||||
{{ end }}
|
||||
10
ent/ping.go
Normal file
10
ent/ping.go
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// Code generated by ent, DO NOT EDIT.
|
||||
|
||||
package ent
|
||||
|
||||
import "entgo.io/ent/dialect/sql"
|
||||
|
||||
func (c *Client) Ping() error {
|
||||
db := c.driver.(*sql.Driver).DB()
|
||||
return db.Ping()
|
||||
}
|
||||
13
ent/ping.tmpl
Normal file
13
ent/ping.tmpl
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{{/* gotype: entgo.io/ent/entc/gen.Graph */}}
|
||||
|
||||
{{ define "ping" }}
|
||||
|
||||
{{ $pkg := base $.Config.Package }}
|
||||
{{ template "header" $ }}
|
||||
|
||||
func (c *Client) Ping() error {
|
||||
db := c.driver.(*sql.Driver).DB()
|
||||
return db.Ping()
|
||||
}
|
||||
|
||||
{{ end }}
|
||||
24
main.go
24
main.go
|
|
@ -11,6 +11,7 @@ import (
|
|||
"git.devminer.xyz/devminer/unitel/unitelhttp"
|
||||
"git.devminer.xyz/devminer/unitel/unitelsql"
|
||||
"github.com/lysand-org/versia-go/ent/instancemetadata"
|
||||
"github.com/lysand-org/versia-go/internal/api_schema"
|
||||
"github.com/lysand-org/versia-go/internal/handlers/follow_handler"
|
||||
"github.com/lysand-org/versia-go/internal/handlers/meta_handler"
|
||||
"github.com/lysand-org/versia-go/internal/handlers/note_handler"
|
||||
|
|
@ -189,6 +190,29 @@ func main() {
|
|||
|
||||
log.Debug().Msg("Registering handlers")
|
||||
|
||||
web.Get("/api/health", func(c *fiber.Ctx) error {
|
||||
dbWorking := true
|
||||
if err := db.Ping(); err != nil {
|
||||
log.Error().Err(err).Msg("Database healthcheck failed")
|
||||
dbWorking = false
|
||||
}
|
||||
|
||||
natsWorking := true
|
||||
if status := nc.Status(); status != nats.CONNECTED {
|
||||
log.Error().Str("status", status.String()).Msg("NATS healthcheck failed")
|
||||
natsWorking = false
|
||||
}
|
||||
|
||||
if dbWorking && natsWorking {
|
||||
return c.SendString("lookin' good")
|
||||
}
|
||||
|
||||
return api_schema.ErrInternalServerError(map[string]any{
|
||||
"database": dbWorking,
|
||||
"nats": natsWorking,
|
||||
})
|
||||
})
|
||||
|
||||
userHandler.Register(web.Group("/"))
|
||||
noteHandler.Register(web.Group("/"))
|
||||
followHandler.Register(web.Group("/"))
|
||||
|
|
|
|||
Loading…
Reference in a new issue