AdvertHardDeleteRepositoryTrait
Read half of the advert hard delete (Bazaar and Comcat `AdvertRepository`): collects dependent data the database cascade cannot reach, and the schema foreign-key graph for the coverage check.
Orchestration lives in AdvertHardDeleteTrait, decisions in AdvertHardDeletePlan.
IMPORTANT: uses raw DBAL, not find(). It runs inside the open delete transaction and every
Api read through the ORM calls UnitOfWork::clear(), which would break the pending work.
Table names derive from the ORM mapping of the advert entity (prefix cms_mod_<module>_),
so one code serves both modules.
Tags
Table of Contents
Methods
- fetchForeignKeyGraph() : array<int, array{table: string, column: string, referencedTable: string, deleteRule: string}>
- Returns all foreign keys of the current schema (for {@see \App\Core\Utils\ValueObjects\AdvertHardDeletePlan::uncoveredForeignKeys()}).
-
findHardDeleteDependents()
: array{messageThreadIds: list, ratingThreadIds: list, assetIds: list, files: list
>} - advertTableName() : string
- Advert table from the ORM mapping (`cms_mod_bazaar_adverts` / `cms_mod_comcat_adverts`).
Methods
fetchForeignKeyGraph()
Returns all foreign keys of the current schema (for {@see \App\Core\Utils\ValueObjects\AdvertHardDeletePlan::uncoveredForeignKeys()}).
public
fetchForeignKeyGraph() : array<int, array{table: string, column: string, referencedTable: string, deleteRule: string}>
Return values
array<int, array{table: string, column: string, referencedTable: string, deleteRule: string}>findHardDeleteDependents()
public
findHardDeleteDependents(array<int, int> $advertIds) : array{messageThreadIds: list, ratingThreadIds: list, assetIds: list, files: list>}
Parameters
- $advertIds : array<int, int>
Return values
array{messageThreadIds: list, ratingThreadIds: list, assetIds: list, files: listadvertTableName()
Advert table from the ORM mapping (`cms_mod_bazaar_adverts` / `cms_mod_comcat_adverts`).
private
advertTableName() : string