package orm import ( "fmt" "log/slog" "proxy-server/server/pkg/env" "github.com/pkg/errors" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) var DB *gorm.DB func Init() { dsn := fmt.Sprintf( "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, ) 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 }