db.go 993 B

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