removed migration validation as it is redudant
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
@@ -60,13 +59,7 @@ func migrateUp(ctx context.Context, migrator *migrate.Migrator, conn *db.DB, cfg
|
|||||||
return errors.Wrap(err, "parse migration count")
|
return errors.Wrap(err, "parse migration count")
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("[INFO] Step 1/5: Validating migrations...")
|
fmt.Println("[INFO] Step 1/4: Checking for pending migrations...")
|
||||||
if err := validateMigrations(ctx); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
fmt.Println("[INFO] Migration validation passed ✓")
|
|
||||||
|
|
||||||
fmt.Println("[INFO] Step 2/5: Checking for pending migrations...")
|
|
||||||
// Check for pending migrations using MigrationsWithStatus (read-only)
|
// Check for pending migrations using MigrationsWithStatus (read-only)
|
||||||
ms, err := migrator.MigrationsWithStatus(ctx)
|
ms, err := migrator.MigrationsWithStatus(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -98,7 +91,7 @@ func migrateUp(ctx context.Context, migrator *migrate.Migrator, conn *db.DB, cfg
|
|||||||
|
|
||||||
// Create backup unless --no-backup flag is set
|
// Create backup unless --no-backup flag is set
|
||||||
if !cfg.Flags.MigrateNoBackup {
|
if !cfg.Flags.MigrateNoBackup {
|
||||||
fmt.Println("[INFO] Step 3/5: Creating backup...")
|
fmt.Println("[INFO] Step 2/4: Creating backup...")
|
||||||
_, err := db.CreateBackup(ctx, cfg.DB, "migration")
|
_, err := db.CreateBackup(ctx, cfg.DB, "migration")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "create backup")
|
return errors.Wrap(err, "create backup")
|
||||||
@@ -109,11 +102,11 @@ func migrateUp(ctx context.Context, migrator *migrate.Migrator, conn *db.DB, cfg
|
|||||||
fmt.Printf("[WARN] Failed to clean old backups: %v\n", err)
|
fmt.Printf("[WARN] Failed to clean old backups: %v\n", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("[INFO] Step 3/5: Skipping backup (--no-backup flag set)")
|
fmt.Println("[INFO] Step 2/4: Skipping backup (--no-backup flag set)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Acquire migration lock
|
// Acquire migration lock
|
||||||
fmt.Println("[INFO] Step 4/5: Acquiring migration lock...")
|
fmt.Println("[INFO] Step 3/4: Acquiring migration lock...")
|
||||||
if err := acquireMigrationLock(ctx, conn); err != nil {
|
if err := acquireMigrationLock(ctx, conn); err != nil {
|
||||||
return errors.Wrap(err, "acquire migration lock")
|
return errors.Wrap(err, "acquire migration lock")
|
||||||
}
|
}
|
||||||
@@ -121,7 +114,7 @@ func migrateUp(ctx context.Context, migrator *migrate.Migrator, conn *db.DB, cfg
|
|||||||
fmt.Println("[INFO] Migration lock acquired")
|
fmt.Println("[INFO] Migration lock acquired")
|
||||||
|
|
||||||
// Run migrations
|
// Run migrations
|
||||||
fmt.Println("[INFO] Step 5/5: Applying migrations...")
|
fmt.Println("[INFO] Step 4/4: Applying migrations...")
|
||||||
group, err := executeUpMigrations(ctx, migrator, toApply)
|
group, err := executeUpMigrations(ctx, migrator, toApply)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "execute migrations")
|
return errors.Wrap(err, "execute migrations")
|
||||||
@@ -253,21 +246,6 @@ func migrateStatus(ctx context.Context, migrator *migrate.Migrator) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateMigrations ensures migrations compile before running
|
|
||||||
func validateMigrations(ctx context.Context) error {
|
|
||||||
cmd := exec.CommandContext(ctx, "go", "build",
|
|
||||||
"-o", "/dev/null", "./internal/db/migrations")
|
|
||||||
|
|
||||||
output, err := cmd.CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("[ERROR] Migration validation failed!")
|
|
||||||
fmt.Println(string(output))
|
|
||||||
return errors.Wrap(err, "migration build failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// acquireMigrationLock prevents concurrent migrations using PostgreSQL advisory lock
|
// acquireMigrationLock prevents concurrent migrations using PostgreSQL advisory lock
|
||||||
func acquireMigrationLock(ctx context.Context, conn *db.DB) error {
|
func acquireMigrationLock(ctx context.Context, conn *db.DB) error {
|
||||||
const lockID = 1234567890 // Arbitrary unique ID for migration lock
|
const lockID = 1234567890 // Arbitrary unique ID for migration lock
|
||||||
|
|||||||
Reference in New Issue
Block a user