pgsql.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package gs
  2. import (
  3. v1 "gogs.tyduyong.com/duyong/dy-admin/internal/iam/models/v1"
  4. "gogs.tyduyong.com/duyong/dy-pkg/app/infrastructure"
  5. "gogs.tyduyong.com/duyong/dy-pkg/app/options"
  6. "gogs.tyduyong.com/duyong/dy-pkg/errors"
  7. "gogs.tyduyong.com/duyong/dy-pkg/logs"
  8. "gorm.io/gorm"
  9. )
  10. const (
  11. iamSchema = "iam"
  12. )
  13. func InitPGSqlDB(pgConfig *options.PGSQLOptions) *gorm.DB {
  14. pgDB, err := infrastructure.InitPGSql(pgConfig)
  15. if err != nil {
  16. logs.Fatal("init pgsql failed", logs.Err(err))
  17. }
  18. // 创建schema
  19. if err = pgDB.Exec("CREATE SCHEMA IF NOT EXISTS " + iamSchema).Error; err != nil {
  20. logs.Fatal("failed to create schema", logs.Err(err))
  21. }
  22. // 设置默认
  23. if err = pgDB.Exec("SET search_path TO " + iamSchema).Error; err != nil {
  24. logs.Fatal("failed to set default schema", logs.Err(err))
  25. }
  26. // 创建表
  27. if err = migrateTables(pgDB); err != nil {
  28. logs.Fatal("failed to migrate tables", logs.Err(err))
  29. }
  30. return pgDB
  31. }
  32. func migrateTables(db *gorm.DB) error {
  33. if err := db.AutoMigrate(&v1.User{}); err != nil {
  34. return errors.Wrap(err, "migrate user model failed")
  35. }
  36. return nil
  37. }