@@ -262,6 +262,78 @@ func checkDBConsistency(logger log.Logger, autofix bool) error {
262
262
}
263
263
}
264
264
265
+ // find collaborations without users
266
+ count , err = models .CountOrphanedObjects ("collaboration" , "user" , "collaboration.user_id=user.id" )
267
+ if err != nil {
268
+ logger .Critical ("Error: %v whilst counting orphaned collaborations" , err )
269
+ return err
270
+ }
271
+ if count > 0 {
272
+ if autofix {
273
+ if err = models .DeleteOrphanedObjects ("collaboration" , "user" , "collaboration.user_id=user.id" ); err != nil {
274
+ logger .Critical ("Error: %v whilst deleting orphaned collaborations" , err )
275
+ return err
276
+ }
277
+ logger .Info ("%d collaborations without existing users deleted" , count )
278
+ } else {
279
+ logger .Warn ("%d collaborations without existing users" , count )
280
+ }
281
+ }
282
+
283
+ // find collaborations without repository
284
+ count , err = models .CountOrphanedObjects ("collaboration" , "repository" , "collaboration.repo_id=repository.id" )
285
+ if err != nil {
286
+ logger .Critical ("Error: %v whilst counting orphaned collaborations" , err )
287
+ return err
288
+ }
289
+ if count > 0 {
290
+ if autofix {
291
+ if err = models .DeleteOrphanedObjects ("collaboration" , "repository" , "collaboration.repo_id=repository.id" ); err != nil {
292
+ logger .Critical ("Error: %v whilst deleting orphaned collaborations" , err )
293
+ return err
294
+ }
295
+ logger .Info ("%d collaborations without existing repository deleted" , count )
296
+ } else {
297
+ logger .Warn ("%d collaborations without existing repository" , count )
298
+ }
299
+ }
300
+
301
+ // find access without users
302
+ count , err = models .CountOrphanedObjects ("access" , "user" , "access.user_id=user.id" )
303
+ if err != nil {
304
+ logger .Critical ("Error: %v whilst counting orphaned access" , err )
305
+ return err
306
+ }
307
+ if count > 0 {
308
+ if autofix {
309
+ if err = models .DeleteOrphanedObjects ("access" , "user" , "access.user_id=user.id" ); err != nil {
310
+ logger .Critical ("Error: %v whilst deleting orphaned access" , err )
311
+ return err
312
+ }
313
+ logger .Info ("%d access without existing users deleted" , count )
314
+ } else {
315
+ logger .Warn ("%d access without existing users" , count )
316
+ }
317
+ }
318
+
319
+ // find access without repository
320
+ count , err = models .CountOrphanedObjects ("access" , "repository" , "access.repo_id=repository.id" )
321
+ if err != nil {
322
+ logger .Critical ("Error: %v whilst counting orphaned access" , err )
323
+ return err
324
+ }
325
+ if count > 0 {
326
+ if autofix {
327
+ if err = models .DeleteOrphanedObjects ("access" , "repository" , "access.repo_id=repository.id" ); err != nil {
328
+ logger .Critical ("Error: %v whilst deleting orphaned access" , err )
329
+ return err
330
+ }
331
+ logger .Info ("%d access without existing repository deleted" , count )
332
+ } else {
333
+ logger .Warn ("%d access without existing repository" , count )
334
+ }
335
+ }
336
+
265
337
return nil
266
338
}
267
339
0 commit comments