From 42623a47bdd44da49f96f479f0107f82fa0ee079 Mon Sep 17 00:00:00 2001 From: Flavio Fois Date: Wed, 18 Mar 2026 10:54:15 +0100 Subject: [PATCH] update configuration to include database connection settings and adjust connection management --- .env.example | 8 ++++++++ internal/config/config.go | 36 +++++++++++++++++++++++++++-------- internal/database/database.go | 6 +++--- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index 216adac..7b40f26 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,12 @@ +# Server Settings PORT=8080 + +# DB Settings DB_DSN=root:secret@tcp(127.0.0.1:3306)/emly?parseTime=true&loc=UTC +MAX_OPEN_CONNS=25 +MAX_IDLE_CONNS=5 +CONN_MAX_LIFETIME=5m + +# API Keys API_KEY=key-one ADMIN_KEY=admin-key-one diff --git a/internal/config/config.go b/internal/config/config.go index db7fff5..c8a36bb 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -2,14 +2,18 @@ package config import ( "os" + "strconv" "strings" ) type Config struct { - Port string - DSN string - APIKey string - AdminKey string + Port string + DSN string + APIKey string + AdminKey string + MaxOpenConns int + MaxIdleConns int + ConnMaxLifetime int } func Load() *Config { @@ -38,10 +42,26 @@ func Load() *Config { } } + maxOpenConns, err := strconv.Atoi(os.Getenv("DB_MAX_OPEN_CONNS")) + if err != nil { + maxOpenConns = 30 + } + maxIdleConns, err := strconv.Atoi(os.Getenv("DB_MAX_IDLE_CONNS")) + if err != nil { + maxIdleConns = 5 + } + connMaxLifetime, err := strconv.Atoi(os.Getenv("DB_CONN_MAX_LIFETIME")) + if err != nil { + connMaxLifetime = 5 + } + return &Config{ - Port: port, - DSN: os.Getenv("DB_DSN"), - APIKey: apiKey, - AdminKey: adminKey, + Port: port, + DSN: os.Getenv("DB_DSN"), + APIKey: apiKey, + AdminKey: adminKey, + MaxOpenConns: maxOpenConns, + MaxIdleConns: maxIdleConns, + ConnMaxLifetime: connMaxLifetime, } } diff --git a/internal/database/database.go b/internal/database/database.go index ce97450..92ee18b 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -15,9 +15,9 @@ func Connect(cfg *config.Config) (*sqlx.DB, error) { return nil, err } - db.SetMaxOpenConns(25) - db.SetMaxIdleConns(5) - db.SetConnMaxLifetime(5 * time.Minute) + db.SetMaxOpenConns(cfg.MaxOpenConns) + db.SetMaxIdleConns(cfg.MaxIdleConns) + db.SetConnMaxLifetime(time.Duration(cfg.ConnMaxLifetime) * time.Minute) return db, nil }