202508041712_delete_non_cascade_deleted_records.go raw
1 package migrations
2 3 import (
4 _ "embed"
5 6 "github.com/go-gormigrate/gormigrate/v2"
7 "gorm.io/gorm"
8 )
9 10 // NOTE: This was actually 2025-07-08
11 var _202508041712_delete_non_cascade_deleted_records = &gormigrate.Migration{
12 ID: "202508041712_delete_non_cascade_deleted_records",
13 Migrate: func(db *gorm.DB) error {
14 15 // the following tables have ON DELETE CASCADE
16 // which was not being applied due to PRAGMA foreign_keys = ON;
17 // not applying to all DB connections:
18 // - app_permissions -> apps
19 // - request_events -> apps
20 // - response_events -> request_events
21 // however we will only delete app permissions.
22 // excess request and response events will be removed in batches by a background task.
23 24 if err := db.Exec(`DELETE FROM app_permissions
25 WHERE app_id NOT IN (SELECT id FROM apps)`).Error; err != nil {
26 return err
27 }
28 29 return nil
30 },
31 Rollback: func(tx *gorm.DB) error {
32 return nil
33 },
34 }
35