mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
58 lines
3.5 KiB
Go
58 lines
3.5 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package database
|
|
|
|
import "time"
|
|
|
|
// ReplicaConfig declares a single read-replica configuration for PostgreSQL.
|
|
type ReplicaConfig struct {
|
|
Host string `config:"host"`
|
|
Port int `config:"port"`
|
|
Username string `config:"username"`
|
|
Password string `config:"password" secret:"true"`
|
|
}
|
|
|
|
// Config declares PostgreSQL and SQLite database configuration.
|
|
type Config struct {
|
|
Enabled bool `config:"enabled" env:"DB_ENABLED" default:"false" autoEnable:"DB_HOST"`
|
|
SQLitePath string `config:"sqlite_path" env:"SQLITE_PATH"`
|
|
Host string `config:"host" env:"DB_HOST"`
|
|
Port int `config:"port" env:"DB_PORT" default:"5432"`
|
|
Username string `config:"username" env:"DB_USERNAME"`
|
|
Password string `config:"password" env:"DB_PASSWORD" secret:"true"`
|
|
Database string `config:"database" env:"DB_NAME" default:"wavelet"`
|
|
MaxIdleConn int `config:"max_idle_conn" env:"DB_MAX_IDLE_CONN" default:"10"`
|
|
MaxOpenConn int `config:"max_open_conn" env:"DB_MAX_OPEN_CONN" default:"100"`
|
|
ConnMaxLifetime int `config:"conn_max_lifetime" env:"DB_CONN_MAX_LIFETIME" default:"3600"`
|
|
ConnMaxIdleTime int `config:"conn_max_idle_time" env:"DB_CONN_MAX_IDLE_TIME" default:"600"`
|
|
LogLevel string `config:"log_level" env:"DB_LOG_LEVEL" default:"warn"`
|
|
SSLMode string `config:"ssl_mode" env:"DB_SSL_MODE" default:"disable"`
|
|
TimeZone string `config:"time_zone" env:"DB_TIMEZONE" default:"UTC"`
|
|
ApplicationName string `config:"application_name" env:"DB_APPLICATION_NAME" default:"wavelet"`
|
|
SearchPath string `config:"search_path" env:"DB_SEARCH_PATH" default:"public"`
|
|
PreferSimpleProtocol bool `config:"prefer_simple_protocol" env:"DB_PREFER_SIMPLE_PROTOCOL"`
|
|
StatementCacheCapacity int `config:"statement_cache_capacity" env:"DB_STATEMENT_CACHE_CAPACITY"`
|
|
DefaultQueryExecMode string `config:"default_query_exec_mode" env:"DB_DEFAULT_QUERY_EXEC_MODE"`
|
|
Replicas []ReplicaConfig `config:"replicas"`
|
|
SlowThreshold time.Duration `config:"slow_threshold" env:"DB_SLOW_THRESHOLD" default:"200ms"`
|
|
}
|
|
|
|
// ClickHouseConfig declares the configuration for ClickHouse analytical storage.
|
|
type ClickHouseConfig struct {
|
|
Enabled bool `config:"enabled" env:"CLICKHOUSE_ENABLED" default:"false" autoEnable:"CLICKHOUSE_HOST"`
|
|
Hosts []string `config:"hosts" env:"CLICKHOUSE_HOST"`
|
|
Username string `config:"username" env:"CLICKHOUSE_USERNAME"`
|
|
Password string `config:"password" env:"CLICKHOUSE_PASSWORD" secret:"true"`
|
|
Database string `config:"database" env:"CLICKHOUSE_NAME" default:"wavelet"`
|
|
MaxIdleConn int `config:"max_idle_conn" env:"CLICKHOUSE_MAX_IDLE_CONN" default:"10"`
|
|
MaxOpenConn int `config:"max_open_conn" env:"CLICKHOUSE_MAX_OPEN_CONN" default:"50"`
|
|
ConnMaxLifetime int `config:"conn_max_lifetime" env:"CLICKHOUSE_CONN_MAX_LIFETIME" default:"3600"`
|
|
DialTimeout int `config:"dial_timeout" env:"CLICKHOUSE_DIAL_TIMEOUT" default:"10"`
|
|
BlockBufferSize uint8 `config:"block_buffer_size" env:"CLICKHOUSE_BLOCK_BUFFER_SIZE" default:"10"`
|
|
}
|
|
|
|
type appEnvConfig struct {
|
|
Env string `config:"env" env:"APP_ENV" default:"development"`
|
|
}
|