79 lines
1.4 KiB
JavaScript
79 lines
1.4 KiB
JavaScript
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
|