Delete pkg/config/2222config.go
This commit is contained in:
parent
85b594ea69
commit
45791054dc
@ -1,142 +0,0 @@
|
||||
// /futriis/pkg/config/config.go
|
||||
// Пакет config предоставляет функциональность для загрузки и управления конфигурацией СУБД Futriis.
|
||||
// Он определяет структуры конфигурации для кластера, узла, хранилища, репликации и Lua плагинов.
|
||||
// Пакет поддерживает загрузку из TOML файлов, установку значений по умолчанию и глобальный доступ
|
||||
// к конфигурации через атомарные операции для потокобезопасности.
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
// Цветовые коды ANSI (скопированы из utils для избежания циклического импорта)
|
||||
const (
|
||||
ColorReset = "\033[0m"
|
||||
ColorDeepSkyBlue = "\033[38;2;0;191;255m"
|
||||
)
|
||||
|
||||
// ClusterConfig конфигурация кластера
|
||||
type ClusterConfig struct {
|
||||
Name string `toml:"name"`
|
||||
CoordinatorAddress string `toml:"coordinator_address"`
|
||||
ReplicationFactor int `toml:"replication_factor"`
|
||||
SyncReplication bool `toml:"sync_replication"`
|
||||
AutoRebalance bool `toml:"auto_rebalance"`
|
||||
Enabled bool `toml:"enabled"`
|
||||
}
|
||||
|
||||
// NodeConfig конфигурация узла
|
||||
type NodeConfig struct {
|
||||
ID string `toml:"id"`
|
||||
Address string `toml:"address"`
|
||||
DataDir string `toml:"data_dir"`
|
||||
AOFEnabled bool `toml:"aof_enabled"`
|
||||
AOFFile string `toml:"aof_file"`
|
||||
}
|
||||
|
||||
// StorageConfig конфигурация хранилища
|
||||
type StorageConfig struct {
|
||||
PageSize int `toml:"page_size"`
|
||||
MaxMemory string `toml:"max_memory"`
|
||||
EvictionPolicy string `toml:"eviction_policy"`
|
||||
}
|
||||
|
||||
// ReplicationConfig конфигурация репликации
|
||||
type ReplicationConfig struct {
|
||||
Enabled bool `toml:"enabled"`
|
||||
SyncMode string `toml:"sync_mode"`
|
||||
HeartbeatInterval int `toml:"heartbeat_interval"`
|
||||
Timeout int `toml:"timeout"`
|
||||
MasterMaster bool `toml:"master_master"` // Включение мастер-мастер репликации
|
||||
}
|
||||
|
||||
// LuaConfig конфигурация Lua плагинов
|
||||
type LuaConfig struct {
|
||||
Enabled bool `toml:"enabled"`
|
||||
PluginsDir string `toml:"plugins_dir"`
|
||||
MaxMemory string `toml:"max_memory"`
|
||||
}
|
||||
|
||||
// Config основная структура конфигурации
|
||||
type Config struct {
|
||||
Cluster ClusterConfig `toml:"cluster"`
|
||||
Node NodeConfig `toml:"node"`
|
||||
Storage StorageConfig `toml:"storage"`
|
||||
Replication ReplicationConfig `toml:"replication"`
|
||||
Lua LuaConfig `toml:"lua"`
|
||||
}
|
||||
|
||||
var globalConfig atomic.Value
|
||||
|
||||
// Load загружает конфигурацию из файла
|
||||
func Load(path string) (*Config, error) {
|
||||
var config Config
|
||||
|
||||
if _, err := toml.DecodeFile(path, &config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Устанавливаем значения по умолчанию, если не указаны
|
||||
if config.Cluster.CoordinatorAddress == "" {
|
||||
config.Cluster.CoordinatorAddress = "127.0.0.1:7379"
|
||||
}
|
||||
|
||||
if config.Node.Address == "" {
|
||||
config.Node.Address = "127.0.0.1:7380"
|
||||
}
|
||||
|
||||
if config.Node.DataDir == "" {
|
||||
config.Node.DataDir = "./data"
|
||||
}
|
||||
|
||||
if config.Node.AOFFile == "" {
|
||||
config.Node.AOFFile = "./data/futriis.aof"
|
||||
}
|
||||
|
||||
if config.Storage.PageSize == 0 {
|
||||
config.Storage.PageSize = 4096
|
||||
}
|
||||
|
||||
if config.Replication.HeartbeatInterval == 0 {
|
||||
config.Replication.HeartbeatInterval = 5
|
||||
}
|
||||
|
||||
if config.Replication.Timeout == 0 {
|
||||
config.Replication.Timeout = 30
|
||||
}
|
||||
|
||||
if config.Lua.PluginsDir == "" {
|
||||
config.Lua.PluginsDir = "./plugins"
|
||||
}
|
||||
|
||||
globalConfig.Store(&config)
|
||||
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
// Get возвращает глобальную конфигурацию
|
||||
func Get() *Config {
|
||||
if cfg := globalConfig.Load(); cfg != nil {
|
||||
return cfg.(*Config)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetClusterConfig возвращает конфигурацию кластера
|
||||
func GetClusterConfig() *ClusterConfig {
|
||||
if cfg := Get(); cfg != nil {
|
||||
return &cfg.Cluster
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetNodeConfig возвращает конфигурацию узла
|
||||
func GetNodeConfig() *NodeConfig {
|
||||
if cfg := Get(); cfg != nil {
|
||||
return &cfg.Node
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user