github.com/akkaraju-satvik/dbmap@v0.0.3-0.20240414054547-f818701a74f0/migrations/migrations.go (about) 1 package migrations 2 3 import ( 4 "database/sql" 5 "os" 6 7 "github.com/akkaraju-satvik/dbmap/queries" 8 "github.com/fatih/color" 9 ) 10 11 func GetUp(migrationDir string) string { 12 upMigration, err := os.ReadFile(migrationDir + "/up.sql") 13 if err != nil { 14 if os.IsNotExist(err) { 15 color.Red("up.sql file not found in migration directory") 16 os.Exit(1) 17 } 18 color.Red("Error reading up migration file\n %s", err.Error()) 19 os.Exit(1) 20 } 21 return string(upMigration) 22 } 23 24 func GetDown(migrationDir string) string { 25 downMigration, err := os.ReadFile(migrationDir + "/down.sql") 26 if err != nil { 27 if os.IsNotExist(err) { 28 color.Red("down.sql file not found in migration directory") 29 os.Exit(1) 30 } 31 color.Red("Error reading down migration file\n %s", err.Error()) 32 os.Exit(1) 33 } 34 return string(downMigration) 35 } 36 37 func Apply(dbUrl string, migration map[string]string) error { 38 39 conn, err := sql.Open("postgres", dbUrl) 40 if err != nil { 41 return err 42 } 43 44 _, err = conn.Exec(migration["migration"]) 45 if err != nil { 46 return err 47 } 48 49 return nil 50 } 51 52 func GetQuery(migrationsDir, migrationName, migrationType string) (string, error) { 53 migrationDir := migrationsDir + "/" + migrationName 54 var migration string 55 if migrationType == "up" { 56 migration = GetUp(migrationDir) 57 } else { 58 migration = GetDown(migrationDir) 59 } 60 return migration, nil 61 } 62 63 func UpdateStatus(migrationId, migrationQuery string) error { 64 conn, err := sql.Open("postgres", migrationQuery) 65 if err != nil { 66 return err 67 } 68 _, err = conn.Exec(queries.UpdateMigrationStatus, migrationId) 69 if err != nil { 70 return err 71 } 72 return nil 73 }