61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
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
|
|
}
|