config

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2026 License: GPL-3.0 Imports: 11 Imported by: 0

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 NewAppConfig(
	env AppEnv,
	maxListLimit int,
	acceptTokenIssuers []string,
	cipherKey string,
	authTailCut bool,
	authTailDuration time.Duration,
	dataTailCut bool,
	dataTailDuration time.Duration,
) *AppConfig

func NewDefaultAppConfig

func NewDefaultAppConfig() *AppConfig

func (*AppConfig) Validate

func (ac *AppConfig) Validate() error

type AppEnv

type AppEnv string
const (
	AppEnvProduction  AppEnv = "prod"
	AppEnvDevelopment AppEnv = "dev"
	AppEnvTest        AppEnv = "test"
)

app env enum

func (AppEnv) Exists

func (ae AppEnv) Exists() bool

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 Load

func Load() (*Config, error)

Load собирает конфигурацию из: Flags -> ENV -> YAML -> Defaults

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

func (*Config) Validate

func (c *Config) Validate() error

Jump to

Keyboard shortcuts

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