diff --git a/db/driver.go b/db/driver.go index a9b1ed0..5caed19 100644 --- a/db/driver.go +++ b/db/driver.go @@ -2,7 +2,9 @@ package db import ( "context" + "database/sql" "log/slog" + "time" _ "github.com/jackc/pgconn" _ "github.com/jackc/pgx/v5" @@ -25,3 +27,34 @@ func NewPostgresPool(dataSource string) *pgxpool.Pool { slog.Info("connected to database") return dbPool } + +const maxOpenDbConn = 10 +const maxIdleDbConn = 5 +const maxDbLifetime = time.Minute * 5 + +func NewMySQL(dataSource string) (*sql.DB, error) { + d, err := sql.Open("mysql", dataSource) + if err != nil { + slog.Error("error connecting to database", "error", err) + } + + d.SetMaxOpenConns(maxOpenDbConn) + d.SetMaxIdleConns(maxIdleDbConn) + d.SetConnMaxLifetime(maxDbLifetime) + + err = testDB(d) + if err != nil { + slog.Error("error pinging database", "error", err) + return nil, err + } + + return d, nil +} + +func testDB(d *sql.DB) error { + err := d.Ping() + if err != nil { + return err + } + return nil +} diff --git a/utils/utils.go b/utils/utils.go index f28ac89..69e1411 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -19,3 +19,10 @@ func LogAndReturnError(err error, message string) error { slog.Error(message, "error", err.Error()) return fmt.Errorf("%s: %w", message, err) } + +func GetBoolFromString(s string) bool { + if s == "S" || s == "s" { + return true + } + return false +}