Skip to content

Commit

Permalink
do not run auto migration on test e2e execution + automigration refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoLiberali committed Aug 1, 2023
1 parent 25f8e57 commit f1bed03
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 26 deletions.
10 changes: 6 additions & 4 deletions persistence/ModuleFx.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package persistence

import (
"github.com/google/uuid"

"go.uber.org/fx"

"github.com/ditrit/badaas/persistence/gormdatabase"
"github.com/ditrit/badaas/persistence/models"
"github.com/ditrit/badaas/persistence/repository"
"github.com/google/uuid"
"go.uber.org/fx"
)

// PersistanceModule for fx
Expand All @@ -18,9 +20,9 @@ import (
var PersistanceModule = fx.Module(
"persistence",
// Database connection
fx.Provide(gormdatabase.CreateDatabaseConnectionFromConfiguration),
fx.Provide(gormdatabase.SetupDatabaseConnection),

//repositories
// repositories
fx.Provide(repository.NewCRUDRepository[models.Session, uuid.UUID]),
fx.Provide(repository.NewCRUDRepository[models.User, uuid.UUID]),
)
48 changes: 26 additions & 22 deletions persistence/gormdatabase/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import (
"fmt"
"time"

"github.com/ditrit/badaas/configuration"
"github.com/ditrit/badaas/persistence/gormdatabase/gormzap"
"github.com/ditrit/badaas/persistence/models"
"go.uber.org/zap"
"gorm.io/driver/postgres"
"gorm.io/gorm"

"github.com/ditrit/badaas/configuration"
"github.com/ditrit/badaas/persistence/gormdatabase/gormzap"
"github.com/ditrit/badaas/persistence/models"
)

// Create the dsn string from the configuration
Expand All @@ -32,7 +33,25 @@ func createDsn(host, username, password, sslmode, dbname string, port int) strin
)
}

// Initialize the database with using the database configuration
// Creates the database object with using the database configuration
// and then executes the auto-migration
func SetupDatabaseConnection(logger *zap.Logger, databaseConfiguration configuration.DatabaseConfiguration) (*gorm.DB, error) {
db, err := CreateDatabaseConnectionFromConfiguration(logger, databaseConfiguration)
if err != nil {
return nil, err
}

err = AutoMigrate(logger, db)
if err != nil {
logger.Error("migration failed")
return nil, err
}
logger.Info("AutoMigration was executed successfully")

return db, nil
}

// Creates the database object with using the database configuration
func CreateDatabaseConnectionFromConfiguration(logger *zap.Logger, databaseConfiguration configuration.DatabaseConfiguration) (*gorm.DB, error) {
dsn := createDsnFromConf(databaseConfiguration)
var err error
Expand All @@ -41,19 +60,14 @@ func CreateDatabaseConnectionFromConfiguration(logger *zap.Logger, databaseConfi
database, err = initializeDBFromDsn(dsn, logger)
if err == nil {
logger.Sugar().Debugf("Database connection is active")
err = AutoMigrate(logger, database)
if err != nil {
logger.Error("migration failed")
return nil, err
}
logger.Info("AutoMigration was executed successfully")
return database, err
}
logger.Sugar().Debugf("Database connection failed with error %q", err.Error())
logger.Sugar().Debugf("Retrying database connection %d/%d in %s",
numberRetry+1, databaseConfiguration.GetRetry(), databaseConfiguration.GetRetryTime().String())
time.Sleep(databaseConfiguration.GetRetryTime())
}

return nil, err
}

Expand All @@ -62,7 +76,6 @@ func initializeDBFromDsn(dsn string, logger *zap.Logger) (*gorm.DB, error) {
database, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: gormzap.New(logger),
})

if err != nil {
return nil, err
}
Expand All @@ -79,18 +92,9 @@ func initializeDBFromDsn(dsn string, logger *zap.Logger) (*gorm.DB, error) {
return database, nil
}

// Migrate the database using gorm [https://gorm.io/docs/migration.html#Auto-Migration]
func autoMigrate(database *gorm.DB, listOfDatabaseTables []any) error {
err := database.AutoMigrate(listOfDatabaseTables...)
if err != nil {
return err
}
return nil
}

// Run the automigration
// Run the auto-migration
func AutoMigrate(logger *zap.Logger, database *gorm.DB) error {
err := autoMigrate(database, models.ListOfTables)
err := database.AutoMigrate(models.ListOfTables...)
if err != nil {
return err
}
Expand Down

0 comments on commit f1bed03

Please sign in to comment.