package config

import "time"

type Database struct {
	Host     string            `yaml:"host" validate:"required"`
	Port     uint16            `yaml:"port" validate:"required"`
	User     string            `yaml:"user" validate:"required"`
	Password string            `yaml:"password" validate:"required"` // Password may be set directly or resolved via RootConfig.SecretSource
	Database string            `yaml:"database" validate:"required"`
	Params   map[string]string `yaml:"params"`

	TLSConfigKey    string        `yaml:"tlsConfigKey"`
	DailTimeout     time.Duration `yaml:"dailTimeout" default:"60s"`
	ReadTimeout     time.Duration `yaml:"readTimeout" default:"30s"`
	WriteTimeout    time.Duration `yaml:"writeTimeout" default:"30s"`
	ConnMaxLifetime time.Duration `yaml:"connMaxLifetime" default:"3m"`
	MaxIdleConns    int           `yaml:"maxIdleConns" default:"100"`
	MaxOpenConns    int           `yaml:"maxOpenConns" default:"100"`

	LogLevel         int           `yaml:"logLevel" default:"4"` // 1: silent, 2: error, 3: warn, 4: info
	LogSlowThreshold time.Duration `yaml:"logSlowThreshold" default:"200ms"`
	TraceQuerySQL    bool          `yaml:"traceQuerySQL" default:"false"`
}
