db.go 1012 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package operations
  2. import (
  3. "fmt"
  4. "git.sxidc.com/service-supports/fserr"
  5. "gorm.io/driver/postgres"
  6. "gorm.io/gorm"
  7. "gorm.io/gorm/logger"
  8. )
  9. func newGormDB(dbConfig *Config) (*gorm.DB, error) {
  10. if dbConfig == nil {
  11. return nil, fserr.New("没有传递数据库配置")
  12. }
  13. gormDB, err := newPostgresGormDB(dbConfig)
  14. if err != nil {
  15. return nil, err
  16. }
  17. return gormDB, nil
  18. }
  19. func newPostgresGormDB(dbConfig *Config) (*gorm.DB, error) {
  20. dsn := "host=%s port=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai"
  21. connStr := fmt.Sprintf(dsn, dbConfig.Address, dbConfig.Port, dbConfig.UserName, dbConfig.Password, dbConfig.Database)
  22. return gorm.Open(postgres.Open(connStr), &gorm.Config{
  23. Logger: logger.Default.LogMode(logger.Info),
  24. PrepareStmt: true,
  25. })
  26. }
  27. func destroyGormDB(gormDB *gorm.DB) error {
  28. if gormDB == nil {
  29. return nil
  30. }
  31. db, err := gormDB.DB()
  32. if err != nil {
  33. return err
  34. }
  35. err = db.Close()
  36. if err != nil {
  37. return err
  38. }
  39. db = nil
  40. return nil
  41. }