diff --git a/db/db.go b/db/db.go index 7f0a437..cc4d8c3 100644 --- a/db/db.go +++ b/db/db.go @@ -18,7 +18,10 @@ func Open(config *service.Config) (*bun.DB, error) { dsn := config.DatabaseUri switch { case strings.HasPrefix(dsn, "postgres://") || strings.HasPrefix(dsn, "postgresql://") || strings.HasPrefix(dsn, "unix://"): - dbConn := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn))) + dbConn := sql.OpenDB( + pgdriver.NewConnector( + pgdriver.WithDSN(dsn), + pgdriver.WithTimeout(time.Duration(config.DatabaseTimeout)*time.Second))) db = bun.NewDB(dbConn, pgdialect.New()) db.SetMaxOpenConns(config.DatabaseMaxConns) db.SetMaxIdleConns(config.DatabaseMaxIdleConns) diff --git a/lib/service/config.go b/lib/service/config.go index 4f81323..2c29733 100644 --- a/lib/service/config.go +++ b/lib/service/config.go @@ -10,6 +10,7 @@ type Config struct { DatabaseMaxConns int `envconfig:"DATABASE_MAX_CONNS" default:"10"` DatabaseMaxIdleConns int `envconfig:"DATABASE_MAX_IDLE_CONNS" default:"5"` DatabaseConnMaxLifetime int `envconfig:"DATABASE_CONN_MAX_LIFETIME" default:"1800"` // 30 minutes + DatabaseTimeout int `envconfig:"DATABASE_TIMEOUT" default:"60"` // 60 seconds SentryDSN string `envconfig:"SENTRY_DSN"` SentryTracesSampleRate float64 `envconfig:"SENTRY_TRACES_SAMPLE_RATE"` LogFilePath string `envconfig:"LOG_FILE_PATH"`