boot

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package boot provides application bootstrapping: config loading, logger, database connections, Redis, and graceful lifecycle management.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitLogger

func InitLogger(mode, serviceName string)

InitLogger initializes the global logger via the log package. Deprecated: use log.Init() directly. Kept for boot.New() internal use.

func LoadConfig

func LoadConfig(path string, cfg any) error

LoadConfig reads a YAML config file into cfg. Environment variables DATABASE_DSN and REDIS_ADDR override file values.

func OpenAllDBs

func OpenAllDBs(cfgs map[string]DatabaseConfig, mode string) (map[string]*gorm.DB, error)

OpenAllDBs opens all databases defined in config.

func OpenDB

func OpenDB(cfg DatabaseConfig, mode string) (*gorm.DB, error)

OpenDB creates a GORM database connection with production-ready pool settings.

func OpenRedis

func OpenRedis(cfg RedisConfig) (*redis.Client, error)

OpenRedis creates a Redis client. Returns nil if Addr is empty.

Types

type AccessLimitConfig added in v0.3.0

type AccessLimitConfig struct {
	Enable   bool `mapstructure:"enable"`
	Total    int  `mapstructure:"total"`    // max requests per window (default 300)
	Duration int  `mapstructure:"duration"` // window in seconds (default 5)
}

AccessLimitConfig describes rate limiting.

type App

type App struct {
	Config   *Config
	Gin      *gin.Engine
	DBs      map[string]*gorm.DB
	Redis    *redis.Client
	GRPC     *grpc.Server
	Registry registry.Registry
	// contains filtered or unexported fields
}

App is the central service instance holding all shared resources.

func New

func New(cfgPath string) (*App, error)

New creates an App from a config file path.

func (*App) DB

func (a *App) DB(name string) *gorm.DB

DB returns a named database connection.

func (*App) OnClose

func (a *App) OnClose(fn func())

OnClose registers a callback invoked during graceful shutdown.

func (*App) OnStart

func (a *App) OnStart(fn func())

OnStart registers a callback invoked after the HTTP server starts listening.

func (*App) Run

func (a *App) Run(setup SetupFunc) error

Run starts the HTTP server (and optional gRPC server), calls setup, then blocks until SIGINT/SIGTERM.

type CORSConfig added in v0.3.0

type CORSConfig struct {
	Enable    bool     `mapstructure:"enable"`
	Mode      string   `mapstructure:"mode"`      // "allow-all" or "whitelist"
	Whitelist []string `mapstructure:"whitelist"` // allowed origins
}

CORSConfig describes CORS settings.

type Config

type Config struct {
	Server      ServerConfig              `mapstructure:"server"`
	Database    map[string]DatabaseConfig `mapstructure:"database"`
	Redis       RedisConfig               `mapstructure:"redis"`
	GRPC        GRPCConfig                `mapstructure:"grpc"`
	Registry    RegistryConfig            `mapstructure:"registry"`
	JWT         JWTConfig                 `mapstructure:"jwt"`
	CORS        CORSConfig                `mapstructure:"cors"`
	AccessLimit AccessLimitConfig         `mapstructure:"accessLimit"`
	Notify      NotifyConfig              `mapstructure:"notify"`
}

Config is the base service configuration. Embed it in your own config struct to add service-specific fields.

func LoadBaseConfig

func LoadBaseConfig(path string) (*Config, error)

LoadBaseConfig is a convenience wrapper that loads into a *Config.

type DatabaseConfig

type DatabaseConfig struct {
	DSN           string `mapstructure:"dsn"`
	MaxIdle       int    `mapstructure:"maxIdle"`       // max idle connections (default 10)
	MaxOpen       int    `mapstructure:"maxOpen"`       // max open connections (default 50)
	MaxLifetime   int    `mapstructure:"maxLifetime"`   // max connection lifetime in seconds (default 3600)
	MaxIdleTime   int    `mapstructure:"maxIdleTime"`   // max idle time in seconds (default 300)
	SlowThreshold int    `mapstructure:"slowThreshold"` // slow query threshold in ms (default 200)
	PingOnOpen    bool   `mapstructure:"pingOnOpen"`    // ping DB on open to verify connectivity (default true)
}

DatabaseConfig describes a single database connection.

type GRPCConfig

type GRPCConfig struct {
	Enable bool   `mapstructure:"enable"`
	Addr   string `mapstructure:"addr"` // e.g. ":7889"
}

GRPCConfig describes an optional gRPC listener.

type JWTConfig added in v0.3.0

type JWTConfig struct {
	Secret  string `mapstructure:"secret"`
	Expires int    `mapstructure:"expires"` // minutes
	Refresh int    `mapstructure:"refresh"` // minutes, auto-refresh window
	Issuer  string `mapstructure:"issuer"`
	Subject string `mapstructure:"subject"`
}

JWTConfig describes JWT authentication settings.

type NotifyConfig added in v0.3.0

type NotifyConfig struct {
	WsURL string `mapstructure:"wsUrl"` // mf-ws internal API base URL
}

NotifyConfig describes the WebSocket notification target.

type RedisConfig

type RedisConfig struct {
	Addr     string `mapstructure:"addr"`
	Password string `mapstructure:"password"`
	DB       int    `mapstructure:"db"`
}

RedisConfig describes a Redis connection. Leave Addr empty to disable.

type RegistryConfig

type RegistryConfig struct {
	Enable    bool     `mapstructure:"enable"`
	Endpoints []string `mapstructure:"endpoints"` // e.g. ["127.0.0.1:2379"]
	Prefix    string   `mapstructure:"prefix"`    // default "/mofang/services/"
	TTL       int      `mapstructure:"ttl"`       // lease TTL in seconds, default 30
}

RegistryConfig describes the service registry (etcd).

type ServerConfig

type ServerConfig struct {
	Name string `mapstructure:"name"`
	Addr string `mapstructure:"addr"` // e.g. ":7801"
	Mode string `mapstructure:"mode"` // "debug" or "release"
}

ServerConfig describes the HTTP server.

type SetupFunc

type SetupFunc func(app *App) error

SetupFunc is called during Run to register routes, stores, gRPC services, etc.

Jump to

Keyboard shortcuts

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