M2 Database Schema
The M2 database supports maintenance operations, work orders, vendors, emergencies, and purchasing. It is a PostgreSQL schema generated from Prisma migrations.
Core Tables
Section titled “Core Tables”| Area | Tables |
|---|---|
| Identity | users |
| Properties | villas, villa_locations, villa_tags, villa_documents, villa_inspections, utility_meters, utility_readings |
| Assets | assets, maintenance_logs |
| Work Orders | work_orders, work_order_comments, attachments, work_order_tasks, work_order_activities, work_order_additional_costs |
| Vendors | vendors, vendor_pricing, vendor_performance_logs, service_contracts |
| Emergencies | emergency_incidents, emergency_action_logs, response_teams, team_members, emergency_contacts |
| Preventive Maintenance | pmp_templates, pmp_schedules, checklists, checklist_items, work_order_checklists, work_order_checklist_items |
| Field Ops | field_notes, timesheets |
| Inventory | parts, inventory_stock, inventory_transactions, work_order_parts |
| Purchasing | purchase_orders, purchase_order_items, po_attachments |
| Requests | requests, request_comments, request_attachments |
| Teams | work_order_teams, work_order_team_members |
| Zones | zones |
Key Relationships
Section titled “Key Relationships”villas.zoneId→zones.idassets.villaId→villas.idmaintenance_logs.assetId→assets.idwork_orders.villaId→villas.idwork_orders.assetId→assets.idwork_orders.assignedToId→users.idwork_orders.reportedById→users.idwork_orders.vendorId→vendors.idwork_orders.requestId→requests.idwork_orders.locationId→villa_locations.idwork_orders.teamId→work_order_teams.idwork_order_comments.workOrderId→work_orders.idattachments.workOrderId→work_orders.idvendor_performance_logs.vendorId→vendors.idservice_contracts.vendorId→vendors.idvendor_pricing.vendorId→vendors.idemergency_incidents.villaId→villas.idemergency_incidents.reportedById→users.idemergency_incidents.assignedTeamId→response_teams.idemergency_action_logs.incidentId→emergency_incidents.idteam_members.teamId→response_teams.idpmp_schedules.templateId→pmp_templates.idfield_notes.authorId→users.idtimesheets.userId→users.idchecklist_items.checklistId→checklists.idinventory_stock.partId→parts.idinventory_transactions.inventoryId→inventory_stock.idpurchase_orders.supplierId→vendors.idpurchase_orders.requestedById→users.idpurchase_orders.approvedById→users.idpurchase_order_items.purchaseOrderId→purchase_orders.idpurchase_order_items.partId→parts.idpo_attachments.purchaseOrderId→purchase_orders.idrequests.requestedById→users.idrequests.assignedToId→users.idrequests.approvedById→users.idrequests.villaId→villas.idrequest_comments.requestId→requests.idrequest_attachments.requestId→requests.idwork_order_parts.workOrderId→work_orders.idwork_order_parts.partId→parts.idwork_order_checklists.workOrderId→work_orders.idwork_order_checklist_items.checklistId→work_order_checklists.idwork_order_team_members.teamId→work_order_teams.idwork_order_team_members.userId→users.idvilla_locations.villaId→villas.idwork_order_tasks.workOrderId→work_orders.idwork_order_tasks.assignedToId→users.idwork_order_additional_costs.workOrderId→work_orders.idwork_order_activities.workOrderId→work_orders.idvilla_documents.villaId→villas.idvilla_inspections.villaId→villas.idutility_meters.villaId→villas.idutility_readings.meterId→utility_meters.idvilla_tags.villaId→villas.id
| Enum | Values |
|---|---|
UserRole | ADMIN, MANAGER, TECHNICIAN, VENDOR |
StaffAvailability | AVAILABLE, ON_ASSIGNMENT, OFF_DUTY, ON_LEAVE, UNAVAILABLE |
VillaStatus | OCCUPIED, VACANT, UNDER_RENOVATION |
AssetCategory | HVAC, PLUMBING, ELECTRICAL, APPLIANCE, STRUCTURAL, POOL, LANDSCAPE, SECURITY, OTHER |
AssetStatus | OPERATIONAL, NEEDS_MAINTENANCE, UNDER_REPAIR, DECOMMISSIONED |
WorkOrderCategory | PLUMBING, ELECTRICAL, HVAC, STRUCTURAL, LANDSCAPING, POOL, APPLIANCE, CLEANING, PEST_CONTROL, OTHER |
WorkOrderStatus | PENDING, IN_PROGRESS, ON_HOLD, COMPLETED, CANCELLED |
Priority | LOW, MEDIUM, HIGH, URGENT |
VendorCategory | PLUMBING, ELECTRICAL, HVAC, LANDSCAPING, POOL, GENERAL, SECURITY, CLEANING, PEST_CONTROL |
VendorStatus | ACTIVE, INACTIVE, SUSPENDED, PENDING |
ContractStatus | ACTIVE, EXPIRED, CANCELLED, PENDING_RENEWAL |
IncidentCategory | FIRE, FLOOD, MEDICAL, SECURITY, POWER_OUTAGE, GAS_LEAK, STRUCTURAL, UTILITY, OTHER |
IncidentSeverity | LOW, MEDIUM, HIGH, CRITICAL |
IncidentStatus | REPORTED, DISPATCHED, IN_PROGRESS, RESOLVED, CLOSED |
TeamRole | LEAD, TECHNICIAN, SUPPORT |
PMPFrequency | DAILY, WEEKLY, BIWEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUAL, ANNUAL |
ZoneStatus | ACTIVE, MAINTENANCE, INACTIVE |
PMPStatus | SCHEDULED, IN_PROGRESS, COMPLETED, OVERDUE, SKIPPED |
NoteType | TEXT, VOICE, PHOTO |
TimesheetStatus | ACTIVE, COMPLETED, APPROVED |
ChecklistStatus | PENDING, IN_PROGRESS, COMPLETED |
PartCategory | HVAC_PARTS, PLUMBING_PARTS, ELECTRICAL_PARTS, POOL_SUPPLIES, CLEANING_SUPPLIES, LANDSCAPING_SUPPLIES, APPLIANCE_PARTS, STRUCTURAL_MATERIALS, TOOLS, SAFETY_EQUIPMENT, OTHER |
TransactionType | IN, OUT, ADJUSTMENT, TRANSFER |
POStatus | DRAFT, PENDING_APPROVAL, APPROVED, ORDERED, PARTIALLY_RECEIVED, RECEIVED, CANCELLED, CLOSED |
RequestType | MAINTENANCE, REPAIR, INSPECTION, IMPROVEMENT, PURCHASE, OTHER |
RequestCategory | PLUMBING, ELECTRICAL, HVAC, STRUCTURAL, LANDSCAPING, POOL, APPLIANCE, CLEANING, PEST_CONTROL, SUPPLIES, EQUIPMENT, OTHER |
RequestStatus | PENDING, UNDER_REVIEW, APPROVED, REJECTED, IN_PROGRESS, COMPLETED, CANCELLED |
TaskStatus | PENDING, IN_PROGRESS, COMPLETED, BLOCKED |
AssetCondition | EXCELLENT, GOOD, FAIR, POOR, CRITICAL |
VillaDocumentType | FLOOR_PLAN, INSURANCE, WARRANTY, PERMIT, PHOTO, OTHER |
InspectionStatus | PENDING, COMPLETED, OVERDUE, CANCELLED |
UtilityType | ELECTRICITY, WATER, GAS, HEATING, COOLING |
- Work orders are the central object, linking to villas, assets, vendors, teams, parts, and checklists.
- Purchasing and inventory data are tied to work orders to enable cost tracking and replenishment.
Source
Section titled “Source”Schema extracted from D:\Development\m2-main\db_export\m2.sql.