-- Group table with hierarchical nesting — tenant scoping at the handler layer. DEFINE TABLE OVERWRITE contact_group SCHEMAFULL; DEFINE FIELD OVERWRITE tenantId ON contact_group TYPE string ASSERT $value != NONE; DEFINE FIELD OVERWRITE name ON contact_group TYPE string ASSERT $value != NONE; DEFINE FIELD OVERWRITE description ON contact_group TYPE option; DEFINE FIELD OVERWRITE parentId ON contact_group TYPE option; DEFINE FIELD OVERWRITE path ON contact_group TYPE string ASSERT $value != NONE; DEFINE FIELD OVERWRITE depth ON contact_group TYPE int DEFAULT 0; DEFINE FIELD OVERWRITE metadata ON contact_group TYPE object DEFAULT {}; DEFINE FIELD OVERWRITE contactCount ON contact_group TYPE int DEFAULT 0; DEFINE FIELD OVERWRITE totalContactCount ON contact_group TYPE int DEFAULT 0; DEFINE FIELD OVERWRITE createdAt ON contact_group TYPE datetime DEFAULT time::now(); DEFINE FIELD OVERWRITE updatedAt ON contact_group TYPE datetime VALUE time::now(); DEFINE INDEX OVERWRITE idx_group_tenant ON contact_group FIELDS tenantId; DEFINE INDEX OVERWRITE idx_group_parent ON contact_group FIELDS tenantId, parentId; DEFINE INDEX OVERWRITE idx_group_path ON contact_group FIELDS path;