Files
proxy/server/pkg/orm/orm.go

61 lines
1021 B
Go
Raw Normal View History

2025-02-19 14:23:58 +08:00
package orm
import (
"fmt"
"log/slog"
2025-02-25 15:56:33 +08:00
"proxy-server/server/pkg/env"
"errors"
2025-02-19 14:23:58 +08:00
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var DB *gorm.DB
func Init() {
dsn := fmt.Sprintf(
2025-02-25 15:56:33 +08:00
"host=%s port=%d user=%s password=%s dbname=%s sslmode=disable TimeZone=%s",
env.DbHost, env.DbPort, env.DbUsername, env.DbPassword, env.DbDatabase, env.DbTimezone,
2025-02-19 14:23:58 +08:00
)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default,
})
if err != nil {
panic(err)
}
2025-03-10 14:20:46 +08:00
// 配置连接池
sqlDb, err := db.DB()
if err != nil {
panic(err)
}
sqlDb.SetMaxIdleConns(10)
sqlDb.SetMaxOpenConns(100)
2025-02-19 14:23:58 +08:00
DB = db
}
func InitForTest(dsn string) {
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default,
})
if err != nil {
panic(err)
}
DB = db
}
func MaySingle[T any](results []T) (*T, error) {
rsLen := len(results)
if rsLen == 0 {
return nil, errors.New("记录为空")
}
if rsLen > 1 {
slog.Warn("记录不唯一", "ids")
}
return &results[0], nil
}