Documentation
¶
Overview ¶
Package boot provides application bootstrapping: config loading, logger, database connections, Redis, and graceful lifecycle management.
Index ¶
- func InitLogger(mode, serviceName string)
- func LoadConfig(path string, cfg any) error
- func OpenAllDBs(cfgs map[string]DatabaseConfig, mode string) (map[string]*gorm.DB, error)
- func OpenDB(cfg DatabaseConfig, mode string) (*gorm.DB, error)
- func OpenRedis(cfg RedisConfig) (*redis.Client, error)
- type AccessLimitConfig
- type App
- type CORSConfig
- type Config
- type DatabaseConfig
- type GRPCConfig
- type JWTConfig
- type NotifyConfig
- type RedisConfig
- type RegistryConfig
- type ServerConfig
- type SetupFunc
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 ¶
LoadConfig reads a YAML config file into cfg. Environment variables DATABASE_DSN and REDIS_ADDR override file values.
func OpenAllDBs ¶
OpenAllDBs opens all databases defined in config.
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 (*App) OnClose ¶
func (a *App) OnClose(fn func())
OnClose registers a callback invoked during graceful shutdown.
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 ¶
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.