Database Schema
Overview
Database Schema
Absence Collection
{
_id: ObjectId, // Primary key
note: String, // Optional description
start: String, // Start date/time (ISO string) - REQUIRED
end: String, // End date/time (ISO string) - REQUIRED
entireBusiness: Boolean, // Affects entire business flag
members: [ObjectId], // References to Member collection
memberIds: [String], // Array of member ID strings
locations: [LocationSchema], // Embedded location documents
type: String, // Absence type (vacation, holiday, break) - REQUIRED
timeZone: String, // Timezone identifier - REQUIRED
meta: MetaSchema, // Metadata information
stateHistory: [StateHistorySchema], // State tracking for soft deletes
createdAt: Date, // Auto-generated creation timestamp
updatedAt: Date // Auto-generated update timestamp
}Schema Definition
Field Specifications
Required Fields
Field
Type
Description
Validation
Optional Fields
Field
Type
Description
Default
System Fields
Field
Type
Description
Auto-Generated
Embedded Schemas
LocationSchema
MetaSchema
StateHistorySchema
Relationships
Member Relationship
Location Relationship
Indexing Strategy
Primary Indexes
Composite Indexes
Query Patterns
Common Queries
Find Absences by Date Range
Find Member-Specific Absences
Paginated Query with Population
Repository Implementation
AbsenceRepository
Key Repository Methods
Standard CRUD Operations
Specialized Queries
Data Consistency
Soft Delete Pattern
State History Tracking
Query Filtering
Multi-Tenancy
Tenant Isolation
Tenant-Aware Queries
Performance Considerations
Query Optimization
Scaling Strategies
Data Migration
Schema Evolution
Example Migration Script
Backup and Recovery
Backup Strategy
Data Retention
Monitoring and Alerts
Database Metrics
Alert Conditions
Security Considerations
Data Protection
Audit Trail
Last updated