package orm import ( "fmt" "log/slog" "os" "github.com/pkg/errors" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) var DB *gorm.DB func Init() { Host := os.Getenv("DB_HOST") Port := os.Getenv("DB_PORT") Database := os.Getenv("DB_DATABASE") Username := os.Getenv("DB_USERNAME") Password := os.Getenv("DB_PASSWORD") Timezone := os.Getenv("DB_TIMEZONE") dsn := fmt.Sprintf( "host=%s port=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=%s", Host, Port, Username, Password, Database, Timezone, ) 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 }