Get metadata references (records in metadata that reference deletion targets) These should already be marked for deletion if the user set things up correctly
Get orphaned references (database-only records not in metadata) These will prevent deletion unless handled
Scan database for records that reference records marked for deletion
Queries are batched: all delete-target primary keys of a given entity are checked against
each referencing foreign key in a single IN (...) query, rather than one query per
(record × referencing field). Metadata membership is resolved via a pre-built key set
instead of re-scanning every metadata record for each reference found.
Records that will be deleted
Map of entity -> entities that reference it
All records from metadata (for checking if DB record exists in metadata)
Array of database references found
Scans the database for existing records that reference records marked for deletion This helps identify: