Files
ember-market-frontend/backend/models/Chat.model.js
2025-03-10 17:39:37 +00:00

68 lines
1.2 KiB
JavaScript

import mongoose from "mongoose";
const MessageSchema = new mongoose.Schema({
sender: {
type: String,
enum: ["buyer", "vendor"],
required: true
},
buyerId: {
type: String,
required: true
},
vendorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Vendor",
required: true
},
content: {
type: String,
required: true
},
attachments: [{
type: String,
required: false
}],
read: {
type: Boolean,
default: false
},
createdAt: {
type: Date,
default: Date.now
}
});
const ChatSchema = new mongoose.Schema({
buyerId: {
type: String,
required: true
},
vendorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Vendor",
required: true
},
storeId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Store",
required: true
},
messages: [MessageSchema],
orderId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Order",
required: false
},
lastUpdated: {
type: Date,
default: Date.now
}
});
// Create indexes for faster queries
ChatSchema.index({ buyerId: 1, vendorId: 1 });
ChatSchema.index({ vendorId: 1, lastUpdated: -1 });
ChatSchema.index({ buyerId: 1, lastUpdated: -1 });
export default mongoose.model("Chat", ChatSchema);