package config import "time" type Config struct { Server ServerConfig Databases map[string]DatabaseConfig ReadReplicas map[string][]DatabaseConfig Security SecurityConfig Keycloak KeycloakConfig } type ServerConfig struct { Port int Mode string } type DatabaseConfig struct { Name string Type string // postgres, mysql, sqlserver, sqlite, mongodb Host string Port int Username string Password string Database string Schema string SSLMode string Path string // For SQLite Options string // Additional connection options MaxOpenConns int // Max open connections MaxIdleConns int // Max idle connections ConnMaxLifetime time.Duration // Connection max lifetime // Security settings RequireSSL bool // Require SSL connection SSLRootCert string // Path to SSL root certificate SSLCert string // Path to SSL client certificate SSLKey string // Path to SSL client key Timeout time.Duration // Connection timeout ConnectTimeout time.Duration // Connect timeout ReadTimeout time.Duration // Read timeout WriteTimeout time.Duration // Write timeout StatementTimeout time.Duration // Statement timeout for PostgreSQL // Connection pool settings MaxLifetime time.Duration // Maximum amount of time a connection may be reused MaxIdleTime time.Duration // Maximum amount of time a connection may be idle HealthCheckPeriod time.Duration // Health check period } type SecurityConfig struct { TrustedOrigins []string `mapstructure:"trusted_origins"` } type KeycloakConfig struct { BaseUrl string Realm string Audience string Issuer string SecretKey string IsEnabled bool }