57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
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("✅ 数据库连接完成")
|
|
}
|