Orchestrates the full FK-graph teardown for the doomed entities of a schema:
enumerate the live FK graph → build the plan → surface any warnings → dry-run report →
execute the atomic batch. Runs on SQL Server or PostgreSQL (dialect-driven).
WARNING: this executes raw set-based SQL and deliberately does NOT go through the BaseEntity
pipeline — so it writes no RecordChange audit rows, fires no *EntityServer delete hooks, and
fires no BaseEntity events, which means provider/BaseEngine metadata caches are NOT invalidated.
That is correct for mj app remove (the CLI process exits immediately after), but a caller that
invokes this inside a long-running process (e.g. MJAPI) must refresh metadata afterward or its
cached entity metadata will be stale.
Orchestrates the full FK-graph teardown for the doomed entities of a schema: enumerate the live FK graph → build the plan → surface any warnings → dry-run report → execute the atomic batch. Runs on SQL Server or PostgreSQL (dialect-driven).
WARNING: this executes raw set-based SQL and deliberately does NOT go through the
BaseEntitypipeline — so it writes no RecordChange audit rows, fires no*EntityServerdelete hooks, and fires no BaseEntity events, which means provider/BaseEnginemetadata caches are NOT invalidated. That is correct formj app remove(the CLI process exits immediately after), but a caller that invokes this inside a long-running process (e.g. MJAPI) must refresh metadata afterward or its cached entity metadata will be stale.