Files
Crimson-Gatekeeper/srv/internal/common/database-client.go

55 lines
1.0 KiB
Go
Raw Normal View History

2026-01-13 00:08:49 +08:00
package common
import (
2026-01-20 00:18:05 +08:00
"Crimson-Gatekeeper/internal/query"
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 的指针
// - 一个清理所有数据库相关数据的函数
2026-01-20 00:18:05 +08:00
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("数据库链接建立失败")
2026-01-20 00:18:05 +08:00
return nil, nil, ero
2026-01-13 13:02:27 +08:00
}
poolCfg, ero := client.DB()
if ero != nil {
fmt.Println("获取数据库链接池失败")
2026-01-20 00:18:05 +08:00
return nil, nil, ero
}
cleanPoolCfg := func() {
ero := poolCfg.Close()
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)
2026-01-20 00:18:05 +08:00
return client, cleanPoolCfg, nil
}
func GetQuery(db *gorm.DB) *query.Query {
return query.Use(db)
2026-01-13 00:08:49 +08:00
}