fix(db):完成数据库连接配置。

This commit is contained in:
徐涛 2023-05-31 22:08:08 +08:00
parent 0d5457fca3
commit 47cd27c968

View File

@ -3,13 +3,11 @@ package global
import ( import (
"context" "context"
"fmt" "fmt"
"time"
"electricity_bill_calc/config" "electricity_bill_calc/config"
"electricity_bill_calc/logger" "electricity_bill_calc/logger"
"github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"github.com/samber/lo" "github.com/samber/lo"
"go.uber.org/zap" "go.uber.org/zap"
@ -20,29 +18,27 @@ var (
) )
func SetupDatabaseConnection() error { func SetupDatabaseConnection() error {
connConfig := &pgx.ConnConfig{ connString := fmt.Sprintf(
Config: pgconn.Config{ "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",
Host: config.DatabaseSettings.Host, config.DatabaseSettings.User,
Port: uint16(config.DatabaseSettings.Port), config.DatabaseSettings.Pass,
User: config.DatabaseSettings.User, config.DatabaseSettings.Host,
Password: config.DatabaseSettings.Pass, config.DatabaseSettings.Port,
Database: config.DatabaseSettings.DB, config.DatabaseSettings.DB,
TLSConfig: nil, 0,
ConnectTimeout: 0 * time.Second, "elec_service_go",
RuntimeParams: map[string]string{"application_name": "elec_service_go"}, config.DatabaseSettings.MaxOpenConns,
}, config.DatabaseSettings.MaxIdleConns,
Tracer: QueryLogger{ "60m",
logger: logger.Named("PG"), "10m",
}, "10s",
} )
poolConfig := &pgxpool.Config{ poolConfig, err := pgxpool.ParseConfig(connString)
ConnConfig: connConfig, if err != nil {
MaxConnLifetime: 60 * time.Minute, logger.Named("DB INIT").Error("数据库连接初始化失败。", zap.Error(err))
MaxConnIdleTime: 10 * time.Minute, return err
HealthCheckPeriod: 10 * time.Second,
MaxConns: int32(config.DatabaseSettings.MaxOpenConns),
MinConns: int32(config.DatabaseSettings.MaxIdleConns),
} }
poolConfig.ConnConfig.Tracer = QueryLogger{logger: logger.Named("PG")}
DB, _ = pgxpool.NewWithConfig(context.Background(), poolConfig) DB, _ = pgxpool.NewWithConfig(context.Background(), poolConfig)
return nil return nil