2026-01-13 00:08:49 +08:00
|
|
|
package common
|
|
|
|
|
|
|
|
|
|
import (
|
2026-01-13 13:02:27 +08:00
|
|
|
"fmt"
|
|
|
|
|
|
2026-01-13 00:08:49 +08:00
|
|
|
"gorm.io/driver/postgres"
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
2026-01-13 13:02:27 +08:00
|
|
|
// GetDataBaseClient 获取数据库链接
|
|
|
|
|
//
|
|
|
|
|
// 返回值
|
|
|
|
|
// - 一个 gorm.DB 的指针
|
|
|
|
|
// - 一个清理所有数据库相关数据的函数
|
|
|
|
|
func GetDataBaseClient() (*gorm.DB, func() error) {
|
2026-01-13 00:08:49 +08:00
|
|
|
dsn := "host=localhost " +
|
|
|
|
|
"user=gatekeeper " +
|
|
|
|
|
"dbname=crimson " +
|
|
|
|
|
"sslmode=disable " +
|
|
|
|
|
"port=5432 " +
|
|
|
|
|
"password=crimson " +
|
|
|
|
|
"connect_timeout=20 "
|
2026-01-13 13:02:27 +08:00
|
|
|
|
|
|
|
|
client, ero := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
|
|
|
if ero != nil {
|
|
|
|
|
fmt.Println("数据库链接建立失败")
|
|
|
|
|
panic(ero)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
poolCfg, ero := client.DB()
|
|
|
|
|
if ero != nil {
|
|
|
|
|
fmt.Println("获取数据库链接池失败")
|
|
|
|
|
panic(ero)
|
2026-01-13 00:08:49 +08:00
|
|
|
}
|
2026-01-13 13:02:27 +08:00
|
|
|
|
|
|
|
|
poolCfg.SetConnMaxIdleTime(3)
|
|
|
|
|
poolCfg.SetMaxOpenConns(10)
|
|
|
|
|
|
|
|
|
|
return client, poolCfg.Close
|
2026-01-13 00:08:49 +08:00
|
|
|
}
|