adding a healthcheck endpoint that confirms communication with influxdb and sqlite.

ref: #381
This commit is contained in:
Jason Kulatunga
2022-11-30 08:25:27 -08:00
parent 58ef1aa311
commit f2856e0f26
4 changed files with 54 additions and 9 deletions
+1
View File
@@ -10,6 +10,7 @@ import (
type DeviceRepo interface {
Close() error
HealthCheck(ctx context.Context) error
RegisterDevice(ctx context.Context, dev models.Device) error
GetDevices(ctx context.Context) ([]models.Device, error)
@@ -195,6 +195,29 @@ func (sr *scrutinyRepository) Close() error {
return nil
}
func (sr *scrutinyRepository) HealthCheck(ctx context.Context) error {
//check influxdb
status, err := sr.influxClient.Health(ctx)
if err != nil {
return fmt.Errorf("influxdb healthcheck failed: %w", err)
}
if status.Status != "pass" {
return fmt.Errorf("influxdb healthcheckf failed: status=%s", status.Status)
}
//check sqlite db.
database, err := sr.gormClient.DB()
if err != nil {
return fmt.Errorf("sqlite healthcheck failed: %w", err)
}
err = database.Ping()
if err != nil {
return fmt.Errorf("sqlite healthcheck failed during ping: %w", err)
}
return nil
}
func InfluxSetupComplete(influxEndpoint string) (bool, error) {
influxUri, err := url.Parse(influxEndpoint)
if err != nil {