-
Notifications
You must be signed in to change notification settings - Fork 0
/
health.go
36 lines (30 loc) · 922 Bytes
/
health.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package middleware
import (
"context"
"github.com/gin-contrib/graceful"
contextutils "github.com/leslieleung/gin-application-template/pkg/context"
"github.com/leslieleung/gin-application-template/pkg/database"
healthcheck "github.com/tavsec/gin-healthcheck"
"github.com/tavsec/gin-healthcheck/checks"
healthcheckcfg "github.com/tavsec/gin-healthcheck/config"
)
func RegisterHealthCheck(r *graceful.Graceful, ctx context.Context) {
c := []checks.Check{
checks.NewContextCheck(ctx, "signals"),
databaseCheck{},
}
err := healthcheck.New(r.Engine, healthcheckcfg.DefaultConfig(), c)
if err != nil {
return
}
}
var _ checks.Check = (*databaseCheck)(nil)
type databaseCheck struct{}
func (d databaseCheck) Pass() bool {
conn := database.GetDB(contextutils.InitGinContext())
sqlDB, err := conn.DB()
return err == nil && sqlDB.Ping() == nil
}
func (d databaseCheck) Name() string {
return "database"
}