diff --git a/global/db.go b/global/db.go index 6ed62cd..1acdc74 100644 --- a/global/db.go +++ b/global/db.go @@ -3,13 +3,11 @@ package global import ( "context" "fmt" - "time" "electricity_bill_calc/config" "electricity_bill_calc/logger" "github.com/jackc/pgx/v5" - "github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgxpool" "github.com/samber/lo" "go.uber.org/zap" @@ -20,29 +18,27 @@ var ( ) func SetupDatabaseConnection() error { - connConfig := &pgx.ConnConfig{ - Config: pgconn.Config{ - Host: config.DatabaseSettings.Host, - Port: uint16(config.DatabaseSettings.Port), - User: config.DatabaseSettings.User, - Password: config.DatabaseSettings.Pass, - Database: config.DatabaseSettings.DB, - TLSConfig: nil, - ConnectTimeout: 0 * time.Second, - RuntimeParams: map[string]string{"application_name": "elec_service_go"}, - }, - Tracer: QueryLogger{ - logger: logger.Named("PG"), - }, - } - poolConfig := &pgxpool.Config{ - ConnConfig: connConfig, - MaxConnLifetime: 60 * time.Minute, - MaxConnIdleTime: 10 * time.Minute, - HealthCheckPeriod: 10 * time.Second, - MaxConns: int32(config.DatabaseSettings.MaxOpenConns), - MinConns: int32(config.DatabaseSettings.MaxIdleConns), + connString := fmt.Sprintf( + "postgres://%s:%s@%s:%d/%s?sslmode=disable&connect_timeout=%d&application_name=%s&pool_max_conns=%d&pool_min_conns=%d&pool_max_conn_lifetime=%s&pool_max_conn_idle_time=%s&pool_health_check_period=%s", + config.DatabaseSettings.User, + config.DatabaseSettings.Pass, + config.DatabaseSettings.Host, + config.DatabaseSettings.Port, + config.DatabaseSettings.DB, + 0, + "elec_service_go", + config.DatabaseSettings.MaxOpenConns, + config.DatabaseSettings.MaxIdleConns, + "60m", + "10m", + "10s", + ) + poolConfig, err := pgxpool.ParseConfig(connString) + if err != nil { + logger.Named("DB INIT").Error("数据库连接初始化失败。", zap.Error(err)) + return err } + poolConfig.ConnConfig.Tracer = QueryLogger{logger: logger.Named("PG")} DB, _ = pgxpool.NewWithConfig(context.Background(), poolConfig) return nil