Help us shape the future of Go! Take the 2026 Go Developer Survey

backend

package
v0.5.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DBString to format connection string to database for postgres
	PostgresDBString = "host=%s port=%d dbname=%s user=%s password=%s sslmode=%s"
	// MySQLDBString to format connection string for MySQL
	MySQLDBString = "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local"
	// DBKey to identify the configuration JSON key
	DBKey = "db"
	// Database types
	DBTypePostgres = "postgres"
	DBTypeMySQL    = "mysql"
	DBTypeSQLite   = "sqlite"
)

Variables

This section is empty.

Functions

func LoadDBManagerFile added in v0.4.9

func LoadDBManagerFile(dbConfigFile string) (*config.YAMLConfigurationDB, error)

LoadDBManagerFile - Function to load DB configuration from YAML file

func PrepareDSN

func PrepareDSN(config config.YAMLConfigurationDB) string

PrepareDSN to generate DB connection string

Types

type DBHealth added in v0.5.5

type DBHealth struct {
	// contains filtered or unexported fields
}

DBHealth monitors database availability by pinging the DB on a fixed interval. It is safe for concurrent use.

A background goroutine calls the check function every Interval. If the check fails FailureThreshold times in a row, IsDegraded() flips to true. The first success after degradation flips it back to false.

The monitor is opt-in: callers must call Start to launch the goroutine and Stop to shut it down. A nil *DBHealth is always non-degraded — EnvCache treats nil as "no monitoring, behave as before" so existing callers that don't wire a monitor are unaffected.

func NewDBHealth added in v0.5.5

func NewDBHealth(db *DBManager, interval time.Duration, failureThreshold uint32) *DBHealth

NewDBHealth creates a DBHealth monitor for the given DBManager. Call Start to begin monitoring and Stop to shut down.

func (*DBHealth) IsDegraded added in v0.5.5

func (h *DBHealth) IsDegraded() bool

IsDegraded returns true when the DB has been unreachable for at least FailureThreshold consecutive checks.

func (*DBHealth) SetOnChange added in v0.5.5

func (h *DBHealth) SetOnChange(fn func(degraded bool))

SetOnChange wires a callback invoked whenever the degraded state transitions. Receives the new state (true = degraded). Used by callers to flip a Prometheus gauge without pkg/backend importing prometheus. Called from the monitor goroutine; callers must ensure their callback is safe to invoke from that goroutine.

func (*DBHealth) Start added in v0.5.5

func (h *DBHealth) Start()

Start launches the background ping goroutine. Calling Start twice without an intervening Stop is a no-op.

func (*DBHealth) Stop added in v0.5.5

func (h *DBHealth) Stop()

Stop shuts down the monitor and waits for the goroutine to exit.

type DBManager

type DBManager struct {
	Conn   *gorm.DB
	Config *config.YAMLConfigurationDB
	DSN    string
}

DBManager have access to backend

func CreateDBManager

func CreateDBManager(dbConfig *config.YAMLConfigurationDB) (*DBManager, error)

CreateDBManager to initialize the DB struct

func CreateDBManagerFile

func CreateDBManagerFile(dbConfigFile string) (*DBManager, error)

CreateDBManagerFile to load values from YAML file and initialize the DB struct

func (*DBManager) Check

func (db *DBManager) Check() error

Check to verify if connection is open and ready

func (*DBManager) GetDB

func (db *DBManager) GetDB() (*gorm.DB, error)

GetDB to get DB using GORM based on the configured driver

type DegradedReader added in v0.5.5

type DegradedReader interface {
	// IsDegraded returns true when the DB has been unreachable for
	// at least FailureThreshold consecutive checks. Returns to false
	// on the first successful ping after a degradation window.
	IsDegraded() bool
}

DegradedReader is the read-only interface for DB health state. Caches and handlers use it to decide whether to serve stale data or extend TTLs during a DB outage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL