Documentation
¶
Overview ¶
Package config implements app configuration
🚀 Иерархия приоритетов (от низшего к высшему):
- Defaults (прописаны в коде) — база, чтобы сервис не упал.
- Config File (YAML/JSON) — настройки для конкретного окружения (dev/prod).
- Environment Variables (ENV) — настройки от Docker/K8s (пароли, хосты).
- Flags (Флаги запуска) — самый высокий приоритет для быстрой отладки
Index ¶
Constants ¶
View Source
const ( FlagAppEnv string = "env" FlagAppMaxListLimit string = "app-max-list-limit" FlagAppTokenIssuer string = "app-token-issuer" FlagAppCipherKey string = "app-cipher-key" FlagAppAcceptTokenIssuers string = "app-accept-token-issuers" FlagAppAuthTailJobRepeatDuration string = "app-auth-tail-job-repeat-duration" FlagAppAuthTailCut string = "app-auth-tail-cut" FlagAppAuthTailDuration string = "app-auth-tail-duration" FlagAppDataTailJobRepeatDuration string = "app-data-tail-job-repeat-duration" FlagAppDataTailCut string = "app-data-tail-cut" FlagAppDataTailDuration string = "app-data-tail-duration" )
App config flags
View Source
const ( FlagAuthJWTSecret string = "auth-jwt-secret" FlagAuthJWTSigningMethod string = "auth-jwt-signing-method" FlagAuthAccessTokenTTL string = "auth-access-token-ttl" FlagAuthRefreshTokenTTL string = "auth-refresh-token-ttl" FlagAuthRSAPrivateKeyPath string = "auth-rsa-private-key-path" FlagAuthMasterPasswordSalt string = "auth-master-password-salt" )
Auth config flags
View Source
const ( FlagDBDSN string = "db-dsn" FlagDBDriver string = "db-driver" FlagDBMaxOpenConns string = "db-max-open-conns" FlagDBMaxIdleConns string = "db-max-idle-conns" FlagDBMaxIdleLifetime string = "db-max-idle-lifetime" FlagDBConnTimeout string = "db-conn-timeout" )
DB config flags
View Source
const ( FlagGRPCAddress string = "grpc-address" FlagGRPCMaxConnIdle string = "grpc-max-conn-idle" FlagGRPCMaxConnAge string = "grpc-max-conn-age" FlagGRPCMaxConnAgeGrace string = "grpc-max-conn-age-grace" FlagGRPCTimeout string = "grpc-timeout" FlagGRPCKeepAliveTime string = "grpc-keep-alive-time" FlagGRPCKeepAliveTimeout string = "grpc-keep-alive-timeout" FlagGRPCShutdownTimeout string = "grpc-shutdown-timeout" )
gRPC config flags
View Source
const ( FlagHTTPAddress string = "http-address" FlagHTTPReadTimeout string = "http-read-timeout" FlagHTTPWriteTimeout string = "http-write-timeout" FlagHTTPIdleTimeout string = "http-idle-timeout" FlagHTTPShutdownTimeout string = "http-shutdown-timeout" FlagHTTPPrivateKeyPath string = "http-private-key-path" FlagHTTPCertificatePath string = "http-certificate-path" FlagHTTPSecure string = "http-secure" FlagHTTPMaxRequestBodySize string = "http-max-request-body-size" )
http config flags
View Source
const ( FlagLogLevel string = "log-level" FlagLogFormat string = "log-format" )
log config flags
View Source
const ( FlagTelemetryEnabled string = "telemetry-enabled" FlagTelemetryServiceName string = "telemetry-service-name" FlagTelemetryExporterEndpoint string = "telemetry-exporter-endpoint" FlagTelemetrySampleRate string = "telemetry-sample-rate" FlagTelemetryTimeout string = "telemetry-timeout" )
telemetry
View Source
const EnvConfig string = "CONFIG_PATH"
EnvConfig - файл конфигурации
View Source
const FlagConfig = "config-path"
FlagConfig - файл конфигурации
Variables ¶
View Source
var ( AppName string AppVersion string AppBuildTime string )
linker params
Functions ¶
This section is empty.
Types ¶
type AppConfig ¶
type AppConfig struct {
Env AppEnv `mapstructure:"env" json:"env,omitempty" yaml:"env,omitempty"` // dev, prod, test
MaxListLimit int `mapstructure:"max_list_limit" json:"max_list_limit,omitempty" yaml:"max_list_limit,omitempty"`
TokenIssuer string `mapstructure:"token_issuer" json:"token_issuer,omitempty" yaml:"token_issuer,omitempty"`
AcceptTokenIssuers []string `mapstructure:"accept_token_issuers" json:"accept_token_issuers,omitempty" yaml:"accept_token_issuers,omitempty"`
CipherKey string `mapstructure:"cipher_key" json:"cipher_key,omitempty" yaml:"cipher_key,omitempty"`
AuthTailJobRepeatDuration time.Duration `` /* 138-byte string literal not displayed */
AuthTailDuration time.Duration `mapstructure:"auth_tail_duration" json:"auth_tail_duration,omitempty" yaml:"auth_tail_duration,omitempty"`
AuthTailCut bool `mapstructure:"auth_tail_cut" json:"auth_tail_cut,omitempty" yaml:"auth_tail_cut,omitempty"`
DataTailJobRepeatDuration time.Duration `` /* 138-byte string literal not displayed */
DataTailDuration time.Duration `mapstructure:"data_tail_duration" json:"data_tail_duration,omitempty" yaml:"data_tail_duration,omitempty"`
DataTailCut bool `mapstructure:"data_tail_cut" json:"data_tail_cut,omitempty" yaml:"data_tail_cut,omitempty"`
}
AppConfig — метаданные сервиса
func NewAppConfig ¶
func NewDefaultAppConfig ¶
func NewDefaultAppConfig() *AppConfig
type AppEnv ¶
type AppEnv string
type Config ¶
type Config struct {
App *AppConfig `mapstructure:"app" json:"app,omitempty" yaml:"app,omitempty"`
Auth *config.AuthConfig `mapstructure:"auth" json:"auth,omitempty" yaml:"auth,omitempty"`
HTTP *config.HTTPConfig `mapstructure:"http" json:"http,omitempty" yaml:"http,omitempty"`
GRPC *config.GRPCConfig `mapstructure:"grpc" json:"grpc,omitempty" yaml:"grpc,omitempty"`
Log *config.LogConfig `mapstructure:"log" json:"log,omitempty" yaml:"log,omitempty"`
DB *config.DBConfig `mapstructure:"db" json:"db,omitempty" yaml:"db,omitempty"`
Telemetry *config.TelemetryConfig `mapstructure:"telemetry" json:"telemetry,omitempty" yaml:"telemetry,omitempty"`
}
func NewConfig ¶
func NewConfig(app *AppConfig, auth *config.AuthConfig, HTTP *config.HTTPConfig, GRPC *config.GRPCConfig, log *config.LogConfig, db *config.DBConfig, telemetry *config.TelemetryConfig) *Config
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
func NewEmptyConfig ¶
func NewEmptyConfig() *Config
Click to show internal directories.
Click to hide internal directories.