DedicatedDB creates an instance of gorm.DB if it has not been created already
()
| 250 | |
| 251 | // DedicatedDB creates an instance of gorm.DB if it has not been created already |
| 252 | func (container *Container) DedicatedDB() (db *gorm.DB) { |
| 253 | container.logger.Debug(fmt.Sprintf("creating %T", db)) |
| 254 | if container.dedicatedDB != nil { |
| 255 | return container.dedicatedDB |
| 256 | } |
| 257 | |
| 258 | config := &gorm.Config{ |
| 259 | TranslateError: true, |
| 260 | } |
| 261 | if isLocal() { |
| 262 | config = &gorm.Config{Logger: container.GormLogger()} |
| 263 | } |
| 264 | |
| 265 | db, err := container.connect(os.Getenv("DATABASE_URL_DEDICATED"), config) |
| 266 | if err != nil { |
| 267 | container.logger.Fatal(err) |
| 268 | } |
| 269 | |
| 270 | if err = db.Use(tracing.NewPlugin()); err != nil { |
| 271 | container.logger.Fatal(stacktrace.Propagate(err, "cannot use GORM tracing plugin")) |
| 272 | } |
| 273 | |
| 274 | container.dedicatedDB = db |
| 275 | if os.Getenv("DATABASE_MIGRATION_SKIP") != "" { |
| 276 | container.logger.Debug(fmt.Sprintf("skipping migrations for [%T]", db)) |
| 277 | return container.dedicatedDB |
| 278 | } |
| 279 | |
| 280 | container.logger.Debug(fmt.Sprintf("Running migrations for dedicated [%T]", db)) |
| 281 | if err = db.AutoMigrate(&entities.Heartbeat{}); err != nil { |
| 282 | container.logger.Fatal(stacktrace.Propagate(err, fmt.Sprintf("cannot migrate %T", &entities.Heartbeat{}))) |
| 283 | } |
| 284 | |
| 285 | if err = db.AutoMigrate(&entities.HeartbeatMonitor{}); err != nil { |
| 286 | container.logger.Fatal(stacktrace.Propagate(err, fmt.Sprintf("cannot migrate %T", &entities.HeartbeatMonitor{}))) |
| 287 | } |
| 288 | |
| 289 | return container.dedicatedDB |
| 290 | } |
| 291 | |
| 292 | // MongoDB creates a *mongo.Database connection to MongoDB Atlas |
| 293 | func (container *Container) MongoDB() *mongoDriver.Database { |
no test coverage detected