From 2c1beb30f6fc3007c19d2c35918b07fa68dae122 Mon Sep 17 00:00:00 2001 From: Muyao CHEN Date: Sun, 6 Oct 2024 13:33:40 +0200 Subject: [PATCH] fix(db): use a normal pgx.Conn first --- go.mod | 2 -- internal/howmuch/howmuch.go | 28 +++++++++++++++----------- internal/howmuch/infra/datastore/db.go | 6 +++--- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 6603360..350d7a9 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/leodido/go-urn v1.4.0 // indirect @@ -61,7 +60,6 @@ require ( golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.25.0 // indirect golang.org/x/text v0.18.0 // indirect google.golang.org/protobuf v1.34.1 // indirect diff --git a/internal/howmuch/howmuch.go b/internal/howmuch/howmuch.go index 1fdd007..3ba6fbd 100644 --- a/internal/howmuch/howmuch.go +++ b/internal/howmuch/howmuch.go @@ -37,6 +37,7 @@ import ( "git.vinchent.xyz/vinchent/howmuch/internal/pkg/log" "git.vinchent.xyz/vinchent/howmuch/pkg/version/verflag" "github.com/gin-gonic/gin" + "github.com/jackc/pgx/v5" "github.com/spf13/cobra" "github.com/spf13/viper" "golang.org/x/net/context" @@ -105,24 +106,27 @@ func run() error { } // Init DB - dbPool, err := datastore.NewDB( - fmt.Sprintf( - "host=%s port=%d dbname=%s user=%s password=%s sslmode=%s", - viper.GetString("db.host"), - viper.GetInt("db.port"), - viper.GetString("db.database"), - viper.GetString("db.username"), - viper.GetString("db.password"), - viper.GetString("db.sslmode"), - ), + dbConfString := fmt.Sprintf( + "host=%s port=%d dbname=%s user=%s password=%s sslmode=%s", + viper.GetString("db.host"), + viper.GetInt("db.port"), + viper.GetString("db.database"), + viper.GetString("db.username"), + viper.GetString("db.password"), + viper.GetString("db.sslmode"), ) + dbConf, err := pgx.ParseConfig(dbConfString) + if err != nil { + log.FatalLog("DB connection config failure", "err", err, "cfg string", dbConfString) + } + dbConn, err := datastore.NewDB(dbConf) if err != nil { log.FatalLog("DB connection failure", "err", err) } - defer dbPool.Close() + defer dbConn.Close(context.Background()) // Register the core service - r := registry.NewRegistry(dbPool) + r := registry.NewRegistry(dbConn) engine := gin.Default() diff --git a/internal/howmuch/infra/datastore/db.go b/internal/howmuch/infra/datastore/db.go index e7661ed..8141785 100644 --- a/internal/howmuch/infra/datastore/db.go +++ b/internal/howmuch/infra/datastore/db.go @@ -25,12 +25,12 @@ package datastore import ( "context" - "github.com/jackc/pgx/v5/pgxpool" + "github.com/jackc/pgx/v5" ) // NewDB creates a new database for the application -func NewDB(dsn string) (*pgxpool.Pool, error) { - conn, err := pgxpool.New(context.Background(), dsn) +func NewDB(connConfig *pgx.ConnConfig) (*pgx.Conn, error) { + conn, err := pgx.ConnectConfig(context.Background(), connConfig) if err != nil { return nil, err }