switch to mysql driver, separate pgx logic, handle no-change migration

This commit is contained in:
Pedro Pérez 2024-11-23 17:08:03 +01:00
parent 21a9683bf1
commit 198bceb9ba
5 changed files with 36 additions and 26 deletions

View File

@ -151,6 +151,7 @@ func (a *App) Migrate(database embed.FS) {
}
if errors.Is(err, migrate.ErrNoChange) {
slog.Info("migration has no changes")
return
}
slog.Info("migration done")

31
db/mysql.go Normal file
View File

@ -0,0 +1,31 @@
package db
import (
"database/sql"
"log/slog"
"time"
_ "github.com/go-sql-driver/mysql"
)
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)
if err := d.Ping(); err != nil {
slog.Error("error pinging database", "error", err)
return nil, err
}
return d, nil
}

View File

@ -2,14 +2,11 @@ package db
import (
"context"
"database/sql"
"log/slog"
"time"
_ "github.com/jackc/pgconn"
_ "github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool"
_ "github.com/jackc/pgx/v5/stdlib"
"log/slog"
)
func NewPGXPool(dataSource string) *pgxpool.Pool {
@ -27,25 +24,3 @@ func NewPGXPool(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)
if err := d.Ping(); err != nil {
slog.Error("error pinging database", "error", err)
return nil, err
}
return d, nil
}

1
go.mod
View File

@ -3,6 +3,7 @@ module gopher-toolbox
go 1.23.2
require (
github.com/go-sql-driver/mysql v1.5.0
github.com/golang-migrate/migrate/v4 v4.18.1
github.com/jackc/pgconn v1.14.3
github.com/jackc/pgx/v5 v5.7.1

2
go.sum
View File

@ -25,6 +25,8 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-migrate/migrate/v4 v4.18.1 h1:JML/k+t4tpHCpQTCAD62Nu43NUFzHY4CV3uAuvHGC+Y=