|
ImagingTools Core SDK
|
Manages cascading metadata updates when related objects are deleted. More...
#include <IDependentMetaInfoController.h>
Inherits istd::IPolymorphic.
Inherited by imtdb::CSqlDatabaseDocumentDelegateComp [virtual].
Classes | |
| struct | DependentMetaInfo |
| Information for updating dependent metadata fields. More... | |
| struct | MetaFieldCleanupPlan |
| Plan for cleaning up metadata fields when referenced objects are deleted. More... | |
Public Member Functions | |
| virtual bool | UpdateDependentMetaInfo (const DependentMetaInfo &metaInfo) const =0 |
| Updates dependent metadata fields to reflect changes in referenced objects. | |
| virtual bool | ClearDependentMetaInfo (const MetaFieldCleanupPlan &metaInfo) const =0 |
| Clears metadata fields that reference deleted objects. | |
Manages cascading metadata updates when related objects are deleted.
IDependentMetaInfoController maintains referential integrity in JSON-based metadata when referenced objects are deleted. It identifies and cleans up dependent metadata fields that reference deleted objects, preventing stale references.
Consider this scenario:
customers tableorders table with metadata: json { "CustomerId": "cust-123", "CustomerName": "John Doe", "CustomerEmail": "john@example.com" } The controller:
* 1. Delete Customer "cust-123"
* ↓
* 2. Controller identifies dependent metadata:
* - Table: orders
* - Key: CustomerId
* - Dependent fields: CustomerName, CustomerEmail
* ↓
* 3. Find orders with CustomerId = "cust-123"
* ↓
* 4. Update metadata:
* {
* "CustomerId": null, // Clear reference
* "CustomerName": null, // Clear dependent field
* "CustomerEmail": null // Clear dependent field
* }
* ↓
* 5. Update LastModified timestamp
* Definition at line 95 of file IDependentMetaInfoController.h.
|
pure virtual |
Clears metadata fields that reference deleted objects.
When objects are deleted, this method finds all dependent objects that have metadata referencing the deleted IDs and clears the relevant fields.
| metaInfo | Describes which objects were deleted and what fields to clean |
Process:
|
pure virtual |
Updates dependent metadata fields to reflect changes in referenced objects.
When a referenced object changes (e.g., Customer renamed), this method updates all dependent metadata that includes derived fields from that object.
| metaInfo | Describes which object's metadata to update and what values to set |
Example use case: