From 5171ce79674205cc06a045a61d9b7c30c53984a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20P=C3=A9rez?= Date: Wed, 6 Nov 2024 00:03:41 +0100 Subject: [PATCH] feat: :sparkles: add mysql driver --- db/driver.go | 33 +++++++++++++++++++++++++++++++++ utils/utils.go | 7 +++++++ 2 files changed, 40 insertions(+) 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 +}