@@ -30,36 +30,38 @@ func RunMigrations() Option {
30
30
return err
31
31
}
32
32
33
- log .WithField ("path" , migrationsPath ).Info ("Applying migrations" )
34
-
35
33
m , err := migrate .NewWithDatabaseInstance ("file://" + migrationsPath , envs .DefaultBackend .Get ("POSTGRES_DB" ), driver )
36
34
if err != nil {
35
+ log .WithError (err ).Error ("failed to create migrate instance" )
36
+
37
37
return errors .Join (ErrMigrationFail , err )
38
38
}
39
39
40
40
if version , dirty , _ := m .Version (); dirty {
41
41
log .WithField ("version" , version ).
42
42
WithField ("dirty" , dirty ).
43
- Info ("migrations are dirty. manual fix required" )
43
+ WithError (err ).
44
+ Error ("migrations are dirty. manual fix required" )
44
45
45
46
return errors .Join (ErrMigrationFail , err )
46
47
}
47
48
49
+ log .WithField ("path" , migrationsPath ).Info ("applying migrations" )
50
+
48
51
if err := m .Up (); err != nil && err != migrate .ErrNoChange {
52
+ log .WithError (err ).Error ("failed to apply migrations" )
53
+
49
54
return errors .Join (ErrMigrationFail , err )
50
55
}
51
56
57
+ log .Info ("migrations applied" )
58
+
52
59
return nil
53
60
}
54
61
}
55
62
56
63
func fetchMigrationsPath () (string , error ) {
57
- cwd , err := os .Getwd ()
58
- if err != nil {
59
- return "" , err
60
- }
61
-
62
- migrationsPath := filepath .Join (cwd , "store" , "pg" , "migrations" )
64
+ migrationsPath := filepath .Join ("/" , "migrations" )
63
65
64
66
if _ , err := os .Stat (migrationsPath ); os .IsNotExist (err ) {
65
67
log .WithField ("path" , migrationsPath ).Info ("Migrations directory not found, creating it" )
@@ -70,5 +72,33 @@ func fetchMigrationsPath() (string, error) {
70
72
return "" , err
71
73
}
72
74
75
+ files , err := os .ReadDir (migrationsPath )
76
+ if err != nil {
77
+ log .WithError (err ).WithField ("path" , migrationsPath ).Error ("failed to read migrations directory" )
78
+ return "" , err
79
+ }
80
+
81
+ if len (files ) == 0 {
82
+ log .Error ("no migration files found in directory" )
83
+ } else {
84
+ log .WithField ("path" , migrationsPath ).WithField ("total_files" , len (files )).Info ("migration files directory content:" )
85
+
86
+ for i , file := range files {
87
+ fileInfo , err := file .Info ()
88
+ if err != nil {
89
+ log .WithField ("filename" , file .Name ()).WithError (err ).Warn ("failed to get file info" )
90
+ continue
91
+ }
92
+
93
+ log .WithFields (log.Fields {
94
+ "index" : i ,
95
+ "name" : file .Name (),
96
+ "size" : fileInfo .Size (),
97
+ "is_dir" : file .IsDir (),
98
+ "mode" : fileInfo .Mode ().String (),
99
+ }).Info ("migration file" )
100
+ }
101
+ }
102
+
73
103
return migrationsPath , nil
74
104
}
0 commit comments