27VDZKFM3H45CL7PCWHM2GBIUHGZ4D2HRPPPYEWO2FFOHPWPBJYQC
3AJLR54INP4CH55JL6XEQPOXYGWU3RFQJ6MWJCOWJU2SZ4YRRGHQC
OBXY6BHNROIV7W4O3MMQ6GTQXU2XUKF5A4DCJYDLUEUHV72E7BNAC
EUEH65HBT4XZXCNWECJXNDEQAWR2NLNSAXFPXLMQ27NOVMQBJT5QC
ZYT3JRERMYXLMJHLPZYQHAINVMPQLBKGGN7A4C7OTVZDY42ZLTKQC
HVXGMDRZZL74CZNWRN3KL3KRKPRMFHJS5QO63SHT5KPZZQYIEFLQC
// Perform cascading delete in correct order (foreign key constraints)
// Perform cascading soft delete in correct order (foreign key constraints)
// 1. Delete label subtypes (references labels)
// 1. Soft delete label subtypes (references labels)
.delete(labelSubtype)
.update(labelSubtype) .set({ active: false, lastModified: new Date(), modifiedBy: userId })
.update(labelSubtype)
.set({
active: false,
lastModified: new Date(),
modifiedBy: userId
})
// 2. Delete labels (references selection)
// 2. Soft delete labels (references selection)
.delete(label)
.update(label) .set({ active: false, lastModified: new Date(), modifiedBy: userId })
.update(label)
// 3. Delete selection metadata (references selection)
// 3. Soft delete selection metadata (references selection)
.delete(selectionMetadata)
.update(selectionMetadata) .set({ active: false, lastModified: new Date(), modifiedBy: userId })
.update(selectionMetadata)
// 4. Delete the selection itself
// 4. Soft delete the selection itself
.delete(selection)
.update(selection) .set({ active: false, lastModified: new Date(), modifiedBy: userId })
.update(selection)
active: boolean("active").default(true),
index("idx_selection_metadata_active").on(table.active),
active BOOLEAN DEFAULT TRUE,
CREATE INDEX idx_selection_metadata_active ON selection_metadata(active);
ALTER TABLE selection_metadata ADD COLUMN active BOOLEAN DEFAULT TRUE;SELECT NOW();-- 2025-07-10 03:19:16CREATE INDEX idx_selection_metadata_active ON selection_metadata(active);
ALTER TABLE selection_metadata ADD COLUMN active BOOLEAN DEFAULT TRUE;
SELECT NOW();
-- 2025-07-10 03:19:16