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
|
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/unitelhttp"
|
||||||
"git.devminer.xyz/devminer/unitel/unitelsql"
|
"git.devminer.xyz/devminer/unitel/unitelsql"
|
||||||
"github.com/lysand-org/versia-go/ent/instancemetadata"
|
"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/follow_handler"
|
||||||
"github.com/lysand-org/versia-go/internal/handlers/meta_handler"
|
"github.com/lysand-org/versia-go/internal/handlers/meta_handler"
|
||||||
"github.com/lysand-org/versia-go/internal/handlers/note_handler"
|
"github.com/lysand-org/versia-go/internal/handlers/note_handler"
|
||||||
|
|
@ -189,6 +190,29 @@ func main() {
|
||||||
|
|
||||||
log.Debug().Msg("Registering handlers")
|
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("/"))
|
userHandler.Register(web.Group("/"))
|
||||||
noteHandler.Register(web.Group("/"))
|
noteHandler.Register(web.Group("/"))
|
||||||
followHandler.Register(web.Group("/"))
|
followHandler.Register(web.Group("/"))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue