1
0
mirror of https://github.com/raseels-repos/golang-saas-starter-kit.git synced 2025-06-06 23:46:29 +02:00

65 lines
1.9 KiB
Go
Raw Permalink Normal View History

package handlers
import (
"context"
"net/http"
2019-08-06 12:29:00 -08:00
"os"
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
2019-05-23 14:32:24 -05:00
"github.com/jmoiron/sqlx"
"github.com/pkg/errors"
"gopkg.in/DataDog/dd-trace-go.v1/contrib/go-redis/redis"
)
// Check provides support for orchestration health checks.
type Check struct {
2019-05-23 14:32:24 -05:00
MasterDB *sqlx.DB
Redis *redis.Client
// ADD OTHER STATE LIKE THE LOGGER IF NEEDED.
}
// Health validates the service is healthy and ready to accept requests.
func (c *Check) Health(ctx context.Context, w http.ResponseWriter, r *http.Request, params map[string]string) error {
// check postgres
2019-05-23 14:32:24 -05:00
_, err := c.MasterDB.Exec("SELECT 1")
if err != nil {
return errors.Wrap(err, "Postgres failed")
}
// check redis
2019-07-10 16:24:10 -08:00
err = c.Redis.Ping().Err()
if err != nil {
return errors.Wrap(err, "Redis failed")
}
2019-08-06 12:29:00 -08:00
data := struct {
Status string `json:"status"`
CiCommitRefName string `json:"ci-commit-ref-name,omitempty"`
2019-08-06 18:38:45 -08:00
CiCommitShortSha string `json:"ci-commit-short-sha,omitempty"`
CiCommitSha string `json:"ci-commit-sha,omitempty"`
CiCommitTag string `json:"ci-commit-tag,omitempty"`
CiCommitTitle string `json:"ci-commit-title,omitempty"`
CiJobId string `json:"ci-commit-job-id,omitempty"`
CiPipelineId string `json:"ci-commit-pipeline-id,omitempty"`
}{
Status: "ok",
CiCommitRefName: os.Getenv("CI_COMMIT_REF_NAME"),
CiCommitShortSha: os.Getenv("CI_COMMIT_SHORT_SHA"),
CiCommitSha: os.Getenv("CI_COMMIT_SHA"),
CiCommitTag: os.Getenv("CI_COMMIT_TAG"),
CiJobId: os.Getenv("CI_JOB_ID"),
CiPipelineId: os.Getenv("CI_PIPELINE_ID"),
}
2019-08-06 12:29:00 -08:00
return web.RespondJson(ctx, w, data, http.StatusOK)
}
2019-07-10 16:24:10 -08:00
// Ping validates the service is ready to accept requests.
func (c *Check) Ping(ctx context.Context, w http.ResponseWriter, r *http.Request, params map[string]string) error {
status := "pong"
2019-07-13 16:32:29 -08:00
return web.RespondText(ctx, w, status, http.StatusOK)
2019-07-10 16:24:10 -08:00
}