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