feat(properties): add parent_id for sub-property hierarchy

Phase 1 of the parent/child rollup feature. Self-FK on properties
with ON DELETE RESTRICT, plus a CHECK that blocks self-reference at
the DB level. Service-layer helpers (getDescendantIds,
getAncestorIds, assertNoCycle) walk the tree via recursive CTEs and
guard against cycles and cross-company parents. softDeleteProperty
now refuses to delete a property with live children.

No UI yet — readers and roll-up routes land in Phase 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-27 12:49:04 +07:00
parent 76248c3d7f
commit 8117253841
6 changed files with 4730 additions and 1 deletions
File diff suppressed because it is too large Load Diff
+14
View File
@@ -113,6 +113,20 @@
"when": 1776932900000,
"tag": "0015_expenses_updated_at_trigger",
"breakpoints": true
},
{
"idx": 16,
"version": "7",
"when": 1777268853483,
"tag": "0016_property_parent_id",
"breakpoints": true
},
{
"idx": 17,
"version": "7",
"when": 1777268853484,
"tag": "0017_property_parent_check",
"breakpoints": true
}
]
}