const mongoose = require('mongoose') const mongoosePaginate = require('mongoose-paginate-v2') const timestamp = require('mongoose-timestamp') const bookingSchema = new mongoose.Schema({ bookingConfig: { type: mongoose.Schema.Types.ObjectId, ref: 'BookingConfig', required: true, index: true }, provider: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, index: true }, buyer: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, index: true }, serviceId: { type: String, required: true }, serviceTitle: { type: String, required: true, trim: true }, servicePrice: { type: Number, required: true }, date: { type: Date, required: true, index: true }, startTime: { type: String, required: true }, endTime: { type: String, required: true }, depositRequired: { type: Boolean, default: false }, depositAmount: { type: Number, default: 0 }, depositPaid: { type: Boolean, default: false }, paymentAuthority: { type: String, default: null }, status: { type: String, enum: ['pending_payment', 'confirmed', 'cancelled'], default: 'pending_payment', index: true } }) bookingSchema.plugin(timestamp) bookingSchema.plugin(mongoosePaginate) const BookingModel = mongoose.model('Booking', bookingSchema) module.exports = BookingModel