package operations import ( "errors" "fmt" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) const ( databaseTypePostgres = "postgres" ) func newGormDB(dbConfig *OperationsConfig) (*gorm.DB, error) { if dbConfig == nil { return nil, errors.New("没有传递数据库配置") } gormDB, err := newPostgresGormDB(dbConfig) if err != nil { return nil, err } return gormDB, nil } func newPostgresGormDB(dbConfig *OperationsConfig) (*gorm.DB, error) { dsn := "host=%s port=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai" connStr := fmt.Sprintf(dsn, dbConfig.Address, dbConfig.Port, dbConfig.UserName, dbConfig.Password, dbConfig.Database) return gorm.Open(postgres.Open(connStr), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), PrepareStmt: true, }) } func destroyGormDB(gormDB *gorm.DB) error { if gormDB == nil { return nil } db, err := gormDB.DB() if err != nil { return err } return db.Close() }