config

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Module = types.Module{
	{CreateFunc: NewConfig},
	{CreateFunc: ConfigAdapter},
}

Functions

This section is empty.

Types

type Config

type Config struct {
	HTTP            HTTPServerConfig `yaml:"http"`
	GRPC            GRPCServerConfig `yaml:"grpc"`
	APM             ElasticAPMConfig `yaml:"apm"`
	Kafka           KafkaConfig      `yaml:"kafka"`
	DB              []DB             `yaml:"db"`
	ElasticSearch   ElasticSearch    `yaml:"elastic_search"`
	Sentry          Sentry           `yaml:"sentry"`
	CouchbaseConfig CouchbaseConfig  `yaml:"couchbase"`
	ConsulConfig    ConsulConfig     `yaml:"consul"`

	ReleaseID string
	Env       string `envconfig:"ENV" default:"development" required:"true" yaml:"env"`
	LogLevel  string `envconfig:"LOG_LEVEL" default:"info" yaml:"log_level"`
	AppName   string `envconfig:"APP_NAME" yaml:"app_name"`

	// DebugLog включает/выключает полные логи ответов (response payload).
	DebugLog            bool `envconfig:"DEBUG_LOG" default:"false" yaml:"debug_log"`
	EnableServerMetrics bool `envconfig:"ENABLE_SERVER_METRICS" default:"true" yaml:"enable_server_metrics"`
}

func NewConfig

func NewConfig(configurators []Configure, info *types.AppInfo) (*Config, error)

type ConfigAdapterIn

type ConfigAdapterIn struct {
	dig.In

	CustomConfigurators []Configure `group:"configurators"`
}

type Configure

type Configure func(cfg *Config) error

func ConfigAdapter

func ConfigAdapter(in ConfigAdapterIn) []Configure

type ConsulConfig added in v1.1.0

type ConsulConfig struct {
	Address            string        `envconfig:"CONSUL_ADDRESS" yaml:"address"`
	Scheme             string        `envconfig:"CONSUL_SCHEME" default:"http" yaml:"scheme"`
	Token              string        `envconfig:"CONSUL_TOKEN" yaml:"token"`
	InsecureSkipVerify bool          `envconfig:"CONSUL_INSECURE_SKIP_VERIFY" default:"true" yaml:"insecure_skip_verify"`
	SessionTTL         string        `envconfig:"CONSUL_SESSION_TTL" default:"30s" yaml:"session_ttl"`
	LeaderTTL          time.Duration `envconfig:"CONSUL_LEADER_TTL" default:"20s" yaml:"leader_ttl"`
}

type CouchbaseConfig added in v1.0.23

type CouchbaseConfig struct {
	DSN         string `envconfig:"COUCHBASE_DSN" yaml:"dsn"`
	User        string `envconfig:"COUCHBASE_USER" yaml:"user"`
	Password    string `envconfig:"COUCHBASE_PWD" yaml:"password"`
	Buckets     string `envconfig:"COUCHBASE_BUCKET" yaml:"bucket"`
	EnableDebug bool   `envconfig:"COUCHBASE_ENABLE_DEBUG" default:"false" yaml:"enable_debug"`
}

type DB added in v1.0.1

type DB struct {
	DSN  string `yaml:"dsn"`
	Name string `yaml:"name"`
	// Type sqlx|pgx
	Type               string        `yaml:"type"`
	MaxOpenConnections int           `yaml:"max_open_connections"`
	MaxIdleConnections int           `yaml:"max_idle_connections"`
	ConnMaxLifetime    time.Duration `yaml:"conn_max_lifetime"`
}

type ElasticAPMConfig

type ElasticAPMConfig struct {
	ServiceName string `envconfig:"ELASTIC_APM_SERVICE_NAME" yaml:"service_name"`
	ServerURL   string `envconfig:"ELASTIC_APM_SERVER_URL" yaml:"server_url"`
	Environment string `envconfig:"ELASTIC_APM_ENVIRONMENT" yaml:"environment"`
}

type ElasticSearch

type ElasticSearch struct {
	// DSN представляет из себя строку, где URI:port нод кластера перечислены через запятую без пробелов
	// Например: 'http://es1.localhost.com:9200,http://es2.localhost.com:9200'
	DSN        string `envconfig:"ELASTIC_SEARCH_DSN" yaml:"dsn"`
	MaxRetries int    `envconfig:"ELASTIC_SEARCH_MAX_RETRIES" default:"5" required:"true" yaml:"max_retries"`
	WithLogger bool   `envconfig:"ELASTIC_WITH_LOGGER" default:"false" required:"true" yaml:"with_logger"`
}

type GRPCServerConfig

type GRPCServerConfig struct {
	ListenAddr               string        `envconfig:"GRPC_LISTEN_ADDR" required:"true" default:":9090" yaml:"listen_addr"`
	KeepaliveTime            time.Duration `envconfig:"GRPC_KEEPALIVE_TIME" default:"30s" yaml:"keepalive_time"`
	KeepaliveTimeout         time.Duration `envconfig:"GRPC_KEEPALIVE_TIMEOUT" default:"10s" yaml:"keepalive_timeout"`
	RegisterReflectionServer bool          `envconfig:"GRPC_REGISTER_REFLECTION_SERVER" default:"true" yaml:"register_reflection_server"`
}

type HTTPServerConfig

type HTTPServerConfig struct {
	ListenAddr       string        `envconfig:"HTTP_LISTEN_ADDR" required:"true" default:":8080" yaml:"listen_addr"`
	KeepaliveTime    time.Duration `envconfig:"HTTP_KEEPALIVE_TIME" default:"30s" yaml:"keepalive_time"`
	KeepaliveTimeout time.Duration `envconfig:"HTTP_KEEPALIVE_TIMEOUT" default:"10s" yaml:"keepalive_timeout"`
}

type KafkaConfig added in v1.0.9

type KafkaConfig struct {
	Addresses   string `envconfig:"KAFKA_ADDRESSES" yaml:"addresses"`
	SkipErrors  string `envconfig:"KAFKA_SKIP_ERRORS" yaml:"skip_errors"`
	EnableDebug bool   `envconfig:"KAFKA_ENABLE_DEBUG" default:"false" yaml:"enable_debug"`
}

type Sentry

type Sentry struct {
	DSN string `envconfig:"SENTRY_DSN" yaml:"sentry_dsn"`
}

Jump to

Keyboard shortcuts

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