@@ -2,6 +2,7 @@ package dbutil
22
33import (
44 "context"
5+ "database/sql"
56 "regexp"
67 "strings"
78 "time"
@@ -11,7 +12,6 @@ import (
1112 "github.com/interline-io/log"
1213 "github.com/jackc/pgx/v5/pgxpool"
1314 "github.com/jackc/pgx/v5/stdlib"
14- _ "github.com/jackc/pgx/v5/stdlib"
1515 "github.com/jmoiron/sqlx"
1616 "github.com/jmoiron/sqlx/reflectx"
1717)
@@ -25,38 +25,51 @@ func toSnakeCase(str string) string {
2525 return strings .ToLower (snake )
2626}
2727
28- func OpenDBPool (ctx context.Context , url string ) (* pgxpool.Pool , * sqlx.DB , error ) {
29- pool , err := pgxpool .New (ctx , url )
30- if err != nil {
31- return nil , nil , err
32- }
33- db := sqlx .NewDb (stdlib .OpenDBFromPool (pool ), "pgx" )
28+ // ConfigureDB sets up common database configuration
29+ func ConfigureDB (sqlDb * sql.DB ) (* sqlx.DB , error ) {
30+ db := sqlx .NewDb (sqlDb , "pgx" )
3431 db .SetMaxOpenConns (10 )
3532 db .SetMaxIdleConns (10 )
3633 db .SetConnMaxLifetime (time .Hour )
3734 if err := db .Ping (); err != nil {
3835 log .Error ().Err (err ).Msgf ("could not connect to database" )
39- return nil , nil , err
36+ return nil , err
4037 }
4138 db .Mapper = reflectx .NewMapperFunc ("db" , toSnakeCase )
42- return pool , db .Unsafe (), nil
39+ return db .Unsafe (), nil
4340}
4441
45- func OpenDB ( url string ) (* sqlx. DB , error ) {
46- db , err := sqlx . Open ( "pgx" , url )
42+ func OpenPool ( ctx context. Context , url string ) (* pgxpool. Pool , error ) {
43+ pool , err := pgxpool . New ( ctx , url )
4744 if err != nil {
48- log .Error ().Err (err ).Msg ("could not open database" )
45+ log .Error ().Err (err ).Msg ("could not open database pool " )
4946 return nil , err
5047 }
51- db .SetMaxOpenConns (10 )
52- db .SetMaxIdleConns (10 )
53- db .SetConnMaxLifetime (time .Hour )
54- if err := db .Ping (); err != nil {
55- log .Error ().Err (err ).Msgf ("could not connect to database" )
48+ if err := pool .Ping (ctx ); err != nil {
49+ log .Error ().Err (err ).Msg ("could not ping database pool" )
5650 return nil , err
5751 }
58- db .Mapper = reflectx .NewMapperFunc ("db" , toSnakeCase )
59- return db .Unsafe (), nil
52+ return pool , nil
53+ }
54+
55+ func OpenDBPool (ctx context.Context , url string ) (* pgxpool.Pool , * sqlx.DB , error ) {
56+ pool , err := pgxpool .New (ctx , url )
57+ if err != nil {
58+ return nil , nil , err
59+ }
60+ db , err := ConfigureDB (stdlib .OpenDBFromPool (pool ))
61+ if err != nil {
62+ return nil , nil , err
63+ }
64+ return pool , db , nil
65+ }
66+
67+ func OpenDB (url string ) (* sqlx.DB , error ) {
68+ db , err := sqlx .Open ("pgx" , url )
69+ if err != nil {
70+ return nil , err
71+ }
72+ return ConfigureDB (db .DB )
6073}
6174
6275// Select runs a query and reads results into dest.
0 commit comments