package db import ( "cn/oneao/base-go/config" "cn/oneao/base-go/ent" "database/sql" "fmt" "log" "entgo.io/ent/dialect" entsql "entgo.io/ent/dialect/sql" _ "github.com/lib/pq" ) var Client *ent.Client // InitDB 初始化 PostgreSQL 数据库连接(使用 sql.DB 配置连接池) func InitDB() { // 处理 SSLMode sslmode := "disable" if config.Db.SllMode { sslmode = "require" } // 构建 PostgreSQL DSN dsn := fmt.Sprintf( "user=%s password=%s dbname=%s host=%s port=%d sslmode=%s TimeZone=%s", config.Db.User, config.Db.Password, config.Db.Dbname, config.Db.Host, config.Db.Port, sslmode, config.Db.TimeZone, ) // 使用 sql.Open 创建原生 *sql.DB 对象 db, err := sql.Open("postgres", dsn) if err != nil { log.Fatalf("❌ 数据库连接失败: %v", err) } // 配置连接池 db.SetMaxOpenConns(config.Db.MaxOpenConns) db.SetMaxIdleConns(config.Db.MaxIdleConns) db.SetConnMaxLifetime(config.Db.ConnMaxLifetime) // 使用 sql.DB 创建 ent.Driver drv := entsql.OpenDB(dialect.Postgres, db) // 创建 ent.Client client := ent.NewClient(ent.Driver(drv)) Client = client log.Println("✅ 数据库连接完成") }