ServerMetadata
Overview
Syncing tenant database schemas with CRM metadata using CRUD hooks and DDL helpers.
The Metadata Admin feature ensures that when a user creates an Entity or Field through the UI/API, the underlying physical database tables are updated accordingly.
Core Responsibilities
- DDL Execution: Creating tables for new entities and adding/dropping columns for fields
- Reference Management: Ensuring LOOKUP fields create foreign key constraints
- Schema Safety: Preventing accidental data loss with
dropColumnflag - Default Fields: Automatically adding audit columns (
created_at,updated_at, etc.)
Hook-into-CRUD Pattern
Instead of a separate Migration API, Selegic uses CRUD hooks attached to Entity and Field models:
Steps
- User creates Entity/Field via API
- CRUD Engine saves metadata record
- Hook triggers
afterevent - Hook calls migration library to run DDL
Key Modules
| Component | Location | Purpose |
|---|---|---|
| EntityHook | features/metadata-admin/ | Manages table lifecycle |
| FieldHook | features/metadata-admin/ | Manages column lifecycle |
| Migration Library | lib/migration/ | DDL abstraction layer |
| Field Mapper | lib/migration/ | Logical to physical type mapping |
Quick Navigation
- Metadata Hooks — EntityHook and FieldHook logic
- Migration Engine — DDL execution patterns
- Runbook — Troubleshooting migration failures