// Package db 封装 PostgreSQL 连接池与基础查询辅助函数。 package db import ( "context" "fmt" "os" "github.com/jackc/pgx/v5/pgxpool" ) // Pool 全局连接池,由 main.go 初始化。 var Pool *pgxpool.Pool // Init 解析 DATABASE_URL 并创建连接池。 func Init(ctx context.Context) error { dsn := os.Getenv("DATABASE_URL") if dsn == "" { dsn = "postgres://postgres:postgres@127.0.0.1:5432/honghuang?sslmode=disable" } cfg, err := pgxpool.ParseConfig(dsn) if err != nil { return fmt.Errorf("parse database url failed: %w", err) } // 生产环境建议根据实例规格调整 cfg.MaxConns = 32 cfg.MinConns = 4 pool, err := pgxpool.NewWithConfig(ctx, cfg) if err != nil { return fmt.Errorf("create db pool failed: %w", err) } if err := pool.Ping(ctx); err != nil { return fmt.Errorf("ping database failed: %w", err) } Pool = pool return nil } // Close 关闭连接池。 func Close() { if Pool != nil { Pool.Close() } }