@@ -164,59 +164,85 @@ def init_database():
164
164
"file_fileset_detection" : "CREATE INDEX file_fileset_detection ON file (fileset, detection)" ,
165
165
}
166
166
167
- try :
168
- cursor .execute ("ALTER TABLE file ADD COLUMN detection_type VARCHAR(20);" )
169
- except Exception :
170
- # if aleady exists, change the length of the column
171
- cursor .execute ("ALTER TABLE file MODIFY COLUMN detection_type VARCHAR(20);" )
172
-
173
- try :
174
- cursor .execute ("ALTER TABLE file ADD COLUMN `timestamp` TIMESTAMP NOT NULL;" )
175
- except Exception :
176
- # if aleady exists, change the length of the column
177
- cursor .execute ("ALTER TABLE file MODIFY COLUMN `timestamp` TIMESTAMP NOT NULL;" )
178
-
179
- try :
180
- cursor .execute ("ALTER TABLE fileset ADD COLUMN `user_count` INT;" )
181
- except Exception :
182
- # if aleady exists, change the length of the column
183
- cursor .execute ("ALTER TABLE fileset MODIFY COLUMN `user_count` INT;" )
184
-
185
- try :
186
- cursor .execute ("ALTER TABLE file ADD COLUMN punycode_name VARCHAR(200);" )
187
- except Exception :
188
- cursor .execute ("ALTER TABLE file MODIFY COLUMN punycode_name VARCHAR(200);" )
189
-
190
- try :
191
- cursor .execute (
192
- "ALTER TABLE file ADD COLUMN encoding_type VARCHAR(20) DEFAULT 'UTF-8';"
193
- )
194
- except Exception :
195
- cursor .execute (
196
- "ALTER TABLE file MODIFY COLUMN encoding_type VARCHAR(20) DEFAULT 'UTF-8';"
197
- )
198
-
199
- try :
200
- cursor .execute (
201
- "ALTER TABLE file ADD COLUMN `size-r` BIGINT DEFAULT 0, ADD COLUMN `size-rd` BIGINT DEFAULT 0;"
202
- )
203
- except Exception :
204
- cursor .execute (
205
- "ALTER TABLE file MODIFY COLUMN `size-r` BIGINT DEFAULT 0, MODIFY COLUMN `size-rd` BIGINT DEFAULT 0;"
206
- )
207
- try :
208
- cursor .execute ("ALTER TABLE log ADD COLUMN `text` varchar(5000);" )
209
- except Exception :
210
- cursor .execute ("ALTER TABLE log MODIFY COLUMN `text` varchar(5000);" )
211
-
212
- try :
213
- cursor .execute (
214
- "ALTER TABLE fileset ADD COLUMN set_dat_metadata varchar(5000) DEFAULT 'UTF-8';"
215
- )
216
- except Exception :
217
- cursor .execute (
218
- "ALTER TABLE fileset MODIFY COLUMN set_dat_metadata varchar(5000) DEFAULT 'UTF-8';"
219
- )
167
+ def migrate_column (cursor , table_name , column_name , add_sql , modify_sql ):
168
+ query = """
169
+ SELECT COUNT(*) AS count
170
+ FROM INFORMATION_SCHEMA.COLUMNS
171
+ WHERE table_name = %s AND column_name = %s
172
+ """
173
+ cursor .execute (query , (table_name , column_name ))
174
+ exists = cursor .fetchone ()["count" ] > 0
175
+
176
+ if exists :
177
+ print (f"Modifying column '{ column_name } ' in table '{ table_name } '" )
178
+ cursor .execute (modify_sql )
179
+ else :
180
+ print (f"Adding column '{ column_name } ' to table '{ table_name } '" )
181
+ cursor .execute (add_sql )
182
+
183
+ migrate_column (
184
+ cursor ,
185
+ "file" ,
186
+ "detection_type" ,
187
+ "ALTER TABLE file ADD COLUMN detection_type VARCHAR(20);" ,
188
+ "ALTER TABLE file MODIFY COLUMN detection_type VARCHAR(20);" ,
189
+ )
190
+
191
+ migrate_column (
192
+ cursor ,
193
+ "file" ,
194
+ "timestamp" ,
195
+ "ALTER TABLE file ADD COLUMN `timestamp` TIMESTAMP NOT NULL;" ,
196
+ "ALTER TABLE file MODIFY COLUMN `timestamp` TIMESTAMP NOT NULL;" ,
197
+ )
198
+
199
+ migrate_column (
200
+ cursor ,
201
+ "fileset" ,
202
+ "user_count" ,
203
+ "ALTER TABLE fileset ADD COLUMN `user_count` INT;" ,
204
+ "ALTER TABLE fileset MODIFY COLUMN `user_count` INT;" ,
205
+ )
206
+
207
+ migrate_column (
208
+ cursor ,
209
+ "file" ,
210
+ "punycode_name" ,
211
+ "ALTER TABLE file ADD COLUMN punycode_name VARCHAR(200);" ,
212
+ "ALTER TABLE file MODIFY COLUMN punycode_name VARCHAR(200);" ,
213
+ )
214
+
215
+ migrate_column (
216
+ cursor ,
217
+ "file" ,
218
+ "encoding_type" ,
219
+ "ALTER TABLE file ADD COLUMN encoding_type VARCHAR(20) DEFAULT 'UTF-8';" ,
220
+ "ALTER TABLE file MODIFY COLUMN encoding_type VARCHAR(20) DEFAULT 'UTF-8';" ,
221
+ )
222
+
223
+ migrate_column (
224
+ cursor ,
225
+ "file" ,
226
+ "size-r" ,
227
+ "ALTER TABLE file ADD COLUMN `size-r` BIGINT DEFAULT 0;" ,
228
+ "ALTER TABLE file MODIFY COLUMN `size-r` BIGINT DEFAULT 0;" ,
229
+ )
230
+
231
+ migrate_column (
232
+ cursor ,
233
+ "file" ,
234
+ "size-rd" ,
235
+ "ALTER TABLE file ADD COLUMN `size-rd` BIGINT DEFAULT 0;" ,
236
+ "ALTER TABLE file MODIFY COLUMN `size-rd` BIGINT DEFAULT 0;" ,
237
+ )
238
+
239
+ migrate_column (
240
+ cursor ,
241
+ "log" ,
242
+ "text" ,
243
+ "ALTER TABLE log ADD COLUMN `text` VARCHAR(5000);" ,
244
+ "ALTER TABLE log MODIFY COLUMN `text` VARCHAR(5000);" ,
245
+ )
220
246
221
247
for index , definition in indices .items ():
222
248
try :
0 commit comments