import { Icon } from '../shared/Icon'; const SCHEMA_FIELDS = [ { field: 'booking_status', type: 'String', description: 'Current booking lifecycle status (enum)', indexed: true, example: 'TRIP_BOOK_PENDING' }, { field: 'booking_status_history', type: 'Array', description: 'Audit trail of all status transitions', indexed: false, example: '[{ status, timestamp, reason? }]' }, { field: 'is_booked', type: 'Boolean', description: 'Flag indicating this is a scheduled ride', indexed: true, example: 'true' }, { field: 'booked_for', type: 'Date', description: 'Scheduled pickup time', indexed: true, example: '2024-12-25T14:00:00Z' }, ]; const INDEXES = [ { name: 'booking_status_1', fields: '{ booking_status: 1 }', purpose: 'Query trips by booking status' }, { name: 'is_booked_1_booking_status_1', fields: '{ is_booked: 1, booking_status: 1 }', purpose: 'Compound: find booked trips in specific status' }, { name: 'booked_for_1', fields: '{ booked_for: 1 }', purpose: 'Query trips by scheduled time (BullMQ job scheduling)' }, ]; const QUERY_PATTERNS = [ { name: 'Optimistic Lock Update', query: "Trip.updateOne(\n { _id: tripId, booking_status: currentStatus },\n { $set: { booking_status: newStatus }, $push: { booking_status_history: entry } }\n)", description: 'Core update pattern — only succeeds if status hasn\'t changed since read' }, { name: 'Find Pending Bookings', query: "Trip.find(\n { is_booked: true, booking_status: 'TRIP_BOOK_PENDING' }\n)", description: 'Used by BullMQ job scheduler to find trips needing confirmation' }, { name: 'Terminal Status Guard', query: "const TERMINAL = ['TRIP_BOOK_FINISHED', 'TRIP_BOOK_OPERATION_RIDER_CANCELED',\n 'TRIP_BOOK_OPERATION_DRIVER_CANCELED', 'TRIP_BOOK_SYSTEM_CANCELED'];\nif (TERMINAL.includes(trip.booking_status)) return;", description: 'Skip middleware if booking is already in terminal state' }, ]; export function DbSchemaSection() { return (
Trip Schema — Booking Fields
{SCHEMA_FIELDS.map((f) => ( ))}
Field Type Description Indexed
{f.field} {f.type} {f.description} {f.indexed ? ( ) : ( )}

Indexes

{INDEXES.map((idx) => (
{idx.fields}

{idx.purpose}

))}

Common Query Patterns

{QUERY_PATTERNS.map((q) => (
{q.name}

{q.description}

                {q.query}
              
))}
); }