config

package
v0.3.4 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2026 License: MIT Imports: 16 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ReadServiceVersion added in v0.3.3

func ReadServiceVersion() (string, error)

Types

type AppConfig added in v0.0.3

type AppConfig struct {
	AppEnv               AppEnv          `env:"APP_ENV" envDefault:"dev"`
	LogLevel             logger.LogLevel `env:"APP_LOG_LEVEL" envDefault:"INFO"`
	ServiceHealthTimeout time.Duration   `env:"SERVICE_HEALTH_TIMEOUT" envDefault:"60s"`
	ServiceName          string          `env:"SERVICE_NAME" envDefault:""`
	ServiceVersion       string          `env:"SERVICE_VERSION" envDefault:""`

	GRPC      GRPCServerConfig    `envPrefix:"GRPC_"`
	HTTP      HTTPServerConfig    `envPrefix:"HTTP_"`
	Health    HealthServerConfig  `envPrefix:"HEALTH_"`
	Metrics   MetricsServerConfig `envPrefix:"METRICS_"`
	Auth      AuthConfig          `envPrefix:"AUTH_"`
	OAuth     OAuthConfig         `envPrefix:"OAUTH_"`
	RateLimit RateLimitConfig     `envPrefix:"RATE_LIMIT_"`
	Mongo     MongoConfig         `envPrefix:"MONGO_"`

	GRPCServices []*GRPCService `env:"-"`
}

func LoadConfig

func LoadConfig() (*AppConfig, error)

func (*AppConfig) GetAuthConfig added in v0.2.1

func (p *AppConfig) GetAuthConfig() *AuthConfig

func (*AppConfig) GetConfig added in v0.0.10

func (p *AppConfig) GetConfig() *AppConfig

func (*AppConfig) GetGRPCConfig added in v0.0.9

func (p *AppConfig) GetGRPCConfig() *GRPCServerConfig

func (*AppConfig) GetGRPCServices added in v0.0.9

func (p *AppConfig) GetGRPCServices() []*GRPCService

func (*AppConfig) GetHTTPConfig added in v0.0.9

func (p *AppConfig) GetHTTPConfig() *HTTPServerConfig

func (*AppConfig) GetHealthConfig added in v0.0.9

func (p *AppConfig) GetHealthConfig() *HealthServerConfig

func (*AppConfig) GetMetricsConfig added in v0.3.0

func (p *AppConfig) GetMetricsConfig() *MetricsServerConfig

func (*AppConfig) GetMongoConfig added in v0.0.9

func (p *AppConfig) GetMongoConfig() *MongoConfig

func (*AppConfig) GetOAuthConfig added in v0.2.6

func (p *AppConfig) GetOAuthConfig() *OAuthConfig

func (*AppConfig) GetRateLimitConfig added in v0.3.2

func (p *AppConfig) GetRateLimitConfig() *RateLimitConfig

type AppConfigProvider added in v0.0.11

type AppConfigProvider interface {
	GetConfig() *AppConfig
	GetGRPCConfig() *GRPCServerConfig
	GetHTTPConfig() *HTTPServerConfig
	GetAuthConfig() *AuthConfig
	GetOAuthConfig() *OAuthConfig
	GetRateLimitConfig() *RateLimitConfig
	GetHealthConfig() *HealthServerConfig
	GetMetricsConfig() *MetricsServerConfig
	GetMongoConfig() *MongoConfig
	GetGRPCServices() []*GRPCService
}

func Config added in v0.1.0

func Config() (AppConfigProvider, error)

type AppEnv added in v0.0.6

type AppEnv string

"dev" | "prod"

const (
	AppEnvDevelopment AppEnv = "dev"
	AppEnvProduction  AppEnv = "prod"
)

func (AppEnv) String added in v0.0.6

func (s AppEnv) String() string

func (*AppEnv) UnmarshalText added in v0.0.6

func (s *AppEnv) UnmarshalText(text []byte) error

type AuthConfig added in v0.2.1

type AuthConfig struct {
	AccessTokenTTL          time.Duration `env:"ACCESS_TOKEN_TTL" envDefault:"15m"`
	RefreshTokenTTL         time.Duration `env:"REFRESH_TOKEN_TTL" envDefault:"720h"`
	JWTIssuer               string        `env:"JWT_ISSUER" envDefault:"invenlore.identity"`
	JWTAudience             string        `env:"JWT_AUDIENCE" envDefault:"invenlore.api"`
	JWKSCacheTTL            time.Duration `env:"JWKS_CACHE_TTL" envDefault:"10m"`
	JWTAllowedSkew          time.Duration `env:"JWT_ALLOWED_SKEW" envDefault:"60s"`
	KeyRotationInterval     time.Duration `env:"KEY_ROTATION_INTERVAL" envDefault:"168h"`
	KeyRetireAfter          time.Duration `env:"KEY_RETIRE_AFTER" envDefault:"1h"`
	KeyRotationTickInterval time.Duration `env:"KEY_ROTATION_TICK_INTERVAL" envDefault:"10m"`
}

type GRPCServerConfig

type GRPCServerConfig struct {
	Host string `env:"HOST" envDefault:"0.0.0.0"`
	Port string `env:"PORT" envDefault:"8080"`
}

type GRPCService

type GRPCService struct {
	Name            string
	Address         string
	RegisterEntries []RegisterEntry
}

type HTTPServerConfig

type HTTPServerConfig struct {
	Host              string        `env:"HOST" envDefault:"0.0.0.0"`
	Port              string        `env:"PORT" envDefault:"8080"`
	ReadTimeout       time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
	WriteTimeout      time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
	IdleTimeout       time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
	ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}

type HealthServerConfig

type HealthServerConfig struct {
	Host              string        `env:"HOST" envDefault:"0.0.0.0"`
	Port              string        `env:"PORT" envDefault:"80"`
	ReadTimeout       time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
	WriteTimeout      time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
	IdleTimeout       time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
	ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}

type MetricsServerConfig added in v0.3.0

type MetricsServerConfig struct {
	Host              string        `env:"HOST" envDefault:"0.0.0.0"`
	Port              string        `env:"PORT" envDefault:"9090"`
	ReadTimeout       time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
	WriteTimeout      time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
	IdleTimeout       time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
	ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}

type MongoConfig added in v0.0.7

type MongoConfig struct {
	URI                      string        `env:"URI"`
	DatabaseName             string        `env:"DATABASE_NAME"`
	HealthCheckTimeout       time.Duration `env:"HEALTHCHECK_TIMEOUT" envDefault:"2s"`
	HealthCheckInterval      time.Duration `env:"HEALTHCHECK_INTERVAL" envDefault:"10s"`
	OperationTimeout         time.Duration `env:"OPERATION_TIMEOUT" envDefault:"10s"`
	MigrationTimeout         time.Duration `env:"MIGRATION_TIMEOUT" envDefault:"15m"`
	MigrationLeaseForTimeout time.Duration `env:"MIGRATION_LEASEFOR_TIMEOUT" envDefault:"30s"`
	MigrationPollInterval    time.Duration `env:"MIGRATION_POLL_INTERVAL" envDefault:"2s"`
	MigrationServiceTimeout  time.Duration `env:"MIGRATION_SERVICE_TIMEOUT" envDefault:"5s"`
}

type OAuthConfig added in v0.2.6

type OAuthConfig struct {
	StateTTL            time.Duration       `env:"STATE_TTL" envDefault:"10m"`
	AllowedRedirectURIs string              `env:"ALLOWED_REDIRECT_URIS"`
	GitHub              OAuthProviderConfig `envPrefix:"GITHUB_"`
}

type OAuthProviderConfig added in v0.2.6

type OAuthProviderConfig struct {
	ClientID     string `env:"CLIENT_ID"`
	ClientSecret string `env:"CLIENT_SECRET"`
	CallbackURL  string `env:"CALLBACK_URL"`
}

type RateLimitConfig added in v0.3.2

type RateLimitConfig struct {
	Enabled           bool                 `env:"ENABLED" envDefault:"true"`
	RedisAddress      string               `env:"REDIS_ADDRESS" envDefault:"redis:6379"`
	RedisPassword     string               `env:"REDIS_PASSWORD" envDefault:""`
	RedisDB           int                  `env:"REDIS_DB" envDefault:"0"`
	Period            time.Duration        `env:"PERIOD" envDefault:"1s"`
	TrustProxy        bool                 `env:"TRUST_PROXY" envDefault:"false"`
	TrustedProxyCIDRs string               `env:"TRUSTED_PROXY_CIDRS" envDefault:""`
	ExemptPaths       string               `env:"EXEMPT_PATHS" envDefault:"/health,/metrics"`
	Auth              RateLimitGroupConfig `envPrefix:"AUTH_"`
	Admin             RateLimitGroupConfig `envPrefix:"ADMIN_"`
	Swagger           RateLimitGroupConfig `envPrefix:"SWAGGER_"`
	Other             RateLimitGroupConfig `envPrefix:"OTHER_"`
}

type RateLimitGroupConfig added in v0.3.2

type RateLimitGroupConfig struct {
	RPS   int `env:"RPS" envDefault:"10"`
	Burst int `env:"BURST" envDefault:"20"`
}

type RegisterEntry added in v0.2.0

type RegisterEntry struct {
	HandlerName         string
	HandlerRegisterFunc RegisterFunc
}

type RegisterFunc

type RegisterFunc func(context.Context, *runtime.ServeMux, *grpc.ClientConn) error

Jump to

Keyboard shortcuts

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