@@ -89,7 +89,7 @@ def step_by_step_migration(db_migration, apply):
89
89
return
90
90
input ("Press Enter to continue..." )
91
91
92
- def bulk_migration (db_migration , apply ):
92
+ def bulk_migration (db_migration , apply , current_version ):
93
93
# Migrate the database
94
94
exit_with = 0
95
95
if apply :
@@ -98,10 +98,15 @@ def bulk_migration(db_migration, apply):
98
98
if exit_code != 0 :
99
99
exit_with = 1
100
100
else :
101
- os .system (f'hasura migrate apply --goto 1 --database-name { db_migration .db_name } --dry-run --log-level WARN &&'
102
- f'hasura migrate apply --down 1 --database-name { db_migration .db_name } --dry-run --log-level WARN' )
103
- exit_code = os .system (f'hasura migrate apply --goto 1 --database-name { db_migration .db_name } &&'
104
- f'hasura migrate apply --down 1 --database-name { db_migration .db_name } ' )
101
+ # Performing GOTO 1 when the database is at migration 1 will cause Hasura to attempt to reapply migration 1
102
+ if current_version == 1 :
103
+ os .system (f'hasura migrate apply --down 1 --database-name { db_migration .db_name } --dry-run --log-level WARN' )
104
+ exit_code = os .system (f'hasura migrate apply --down 1 --database-name { db_migration .db_name } ' )
105
+ else :
106
+ os .system (f'hasura migrate apply --goto 1 --database-name { db_migration .db_name } --dry-run --log-level WARN &&'
107
+ f'hasura migrate apply --down 1 --database-name { db_migration .db_name } --dry-run --log-level WARN' )
108
+ exit_code = os .system (f'hasura migrate apply --goto 1 --database-name { db_migration .db_name } &&'
109
+ f'hasura migrate apply --down 1 --database-name { db_migration .db_name } ' )
105
110
if exit_code != 0 :
106
111
exit_with = 1
107
112
@@ -128,7 +133,9 @@ def mark_current_version(username, password, netloc):
128
133
129
134
# Mark everything up to that as applied
130
135
for i in range (0 , current_schema + 1 ):
131
- os .system ('hasura migrate apply --skip-execution --version ' + str (i )+ ' --database-name aerie >/dev/null 2>&1' )
136
+ os .system ('hasura migrate apply --skip-execution --version ' + str (i )+ ' --database-name Aerie >/dev/null 2>&1' )
137
+
138
+ return current_schema
132
139
133
140
def main ():
134
141
# Create a cli parser
@@ -227,7 +234,7 @@ def main():
227
234
os .chdir (HASURA_PATH )
228
235
229
236
# Mark all migrations previously applied to the databases to be updated as such
230
- mark_current_version (username , password , args .network_location )
237
+ current_version = mark_current_version (username , password , args .network_location )
231
238
232
239
clear_screen ()
233
240
print (f'\n ###############################'
@@ -238,7 +245,7 @@ def main():
238
245
# Go step-by-step through the migrations available for the selected database
239
246
step_by_step_migration (migration , args .apply )
240
247
else :
241
- bulk_migration (migration , args .apply )
248
+ bulk_migration (migration , args .apply , current_version )
242
249
243
250
if __name__ == "__main__" :
244
251
main ()
0 commit comments