Perbaikan pembacaan data base
This commit is contained in:
@@ -70,6 +70,42 @@ func LoadConfig() *Config {
|
||||
}
|
||||
|
||||
func (c *Config) loadDatabaseConfigs() {
|
||||
// Simplified approach: Directly load from environment variables
|
||||
// This ensures we get the exact values specified in .env
|
||||
|
||||
// Primary database configuration
|
||||
c.Databases["primary"] = DatabaseConfig{
|
||||
Name: "primary",
|
||||
Type: getEnv("DB_CONNECTION", "postgres"),
|
||||
Host: getEnv("DB_HOST", "localhost"),
|
||||
Port: getEnvAsInt("DB_PORT", 5432),
|
||||
Username: getEnv("DB_USERNAME", ""),
|
||||
Password: getEnv("DB_PASSWORD", ""),
|
||||
Database: getEnv("DB_DATABASE", "satu_db"),
|
||||
Schema: getEnv("DB_SCHEMA", "public"),
|
||||
SSLMode: getEnv("DB_SSLMODE", "disable"),
|
||||
MaxOpenConns: getEnvAsInt("DB_MAX_OPEN_CONNS", 25),
|
||||
MaxIdleConns: getEnvAsInt("DB_MAX_IDLE_CONNS", 25),
|
||||
ConnMaxLifetime: parseDuration(getEnv("DB_CONN_MAX_LIFETIME", "5m")),
|
||||
}
|
||||
|
||||
// SATUDATA database configuration
|
||||
c.Databases["satudata"] = DatabaseConfig{
|
||||
Name: "satudata",
|
||||
Type: getEnv("SATUDATA_CONNECTION", "postgres"),
|
||||
Host: getEnv("SATUDATA_HOST", "localhost"),
|
||||
Port: getEnvAsInt("SATUDATA_PORT", 5432),
|
||||
Username: getEnv("SATUDATA_USERNAME", ""),
|
||||
Password: getEnv("SATUDATA_PASSWORD", ""),
|
||||
Database: getEnv("SATUDATA_DATABASE", "satu_db"),
|
||||
Schema: getEnv("SATUDATA_SCHEMA", "public"),
|
||||
SSLMode: getEnv("SATUDATA_SSLMODE", "disable"),
|
||||
MaxOpenConns: getEnvAsInt("SATUDATA_MAX_OPEN_CONNS", 25),
|
||||
MaxIdleConns: getEnvAsInt("SATUDATA_MAX_IDLE_CONNS", 25),
|
||||
ConnMaxLifetime: parseDuration(getEnv("SATUDATA_CONN_MAX_LIFETIME", "5m")),
|
||||
}
|
||||
|
||||
// Legacy support for backward compatibility
|
||||
envVars := os.Environ()
|
||||
dbConfigs := make(map[string]map[string]string)
|
||||
|
||||
@@ -100,35 +136,12 @@ func (c *Config) loadDatabaseConfigs() {
|
||||
dbConfigs[dbName][property] = value
|
||||
}
|
||||
}
|
||||
|
||||
// Parse DB_ prefixed variables
|
||||
if strings.HasPrefix(key, "DB_") && !strings.Contains(key, "_REPLICA_") {
|
||||
segments := strings.Split(key, "_")
|
||||
if len(segments) >= 3 {
|
||||
dbName := strings.ToLower(segments[1])
|
||||
property := strings.ToLower(strings.Join(segments[2:], "_"))
|
||||
|
||||
if dbConfigs[dbName] == nil {
|
||||
dbConfigs[dbName] = make(map[string]string)
|
||||
}
|
||||
dbConfigs[dbName][property] = value
|
||||
}
|
||||
}
|
||||
|
||||
// Parse legacy format (for backward compatibility)
|
||||
if strings.HasPrefix(key, "BLUEPRINT_DB_") {
|
||||
if dbConfigs["primary"] == nil {
|
||||
dbConfigs["primary"] = make(map[string]string)
|
||||
}
|
||||
property := strings.ToLower(strings.TrimPrefix(key, "BLUEPRINT_DB_"))
|
||||
dbConfigs["primary"][property] = value
|
||||
}
|
||||
}
|
||||
|
||||
// Create DatabaseConfig from parsed configurations
|
||||
// Create DatabaseConfig from parsed configurations for additional databases
|
||||
for name, config := range dbConfigs {
|
||||
// Skip empty configurations or system configurations
|
||||
if name == "" || strings.Contains(name, "chrome_crashpad_pipe") {
|
||||
if name == "" || strings.Contains(name, "chrome_crashpad_pipe") || name == "primary" || name == "satudata" {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -154,25 +167,8 @@ func (c *Config) loadDatabaseConfigs() {
|
||||
continue
|
||||
}
|
||||
|
||||
// Handle legacy format
|
||||
if name == "primary" && dbConfig.Type == "postgres" && dbConfig.Host == "localhost" {
|
||||
dbConfig.Host = getEnv("BLUEPRINT_DB_HOST", "localhost")
|
||||
dbConfig.Port = getEnvAsInt("BLUEPRINT_DB_PORT", 5432)
|
||||
dbConfig.Username = getEnv("BLUEPRINT_DB_USERNAME", "postgres")
|
||||
dbConfig.Password = getEnv("BLUEPRINT_DB_PASSWORD", "postgres")
|
||||
dbConfig.Database = getEnv("BLUEPRINT_DB_DATABASE", "api_service")
|
||||
dbConfig.Schema = getEnv("BLUEPRINT_DB_SCHEMA", "public")
|
||||
}
|
||||
|
||||
c.Databases[name] = dbConfig
|
||||
}
|
||||
|
||||
// Add specific databases from .env if not already parsed
|
||||
c.addSpecificDatabase("db", "postgres")
|
||||
c.addSpecificDatabase("simrs", "postgres")
|
||||
c.addSpecificDatabase("antrian", "mysql")
|
||||
c.addSpecificDatabase("satudata", "postgres")
|
||||
c.addSpecificDatabase("mongodb_dev", "mongodb")
|
||||
}
|
||||
|
||||
func (c *Config) loadReadReplicaConfigs() {
|
||||
|
||||
Reference in New Issue
Block a user