62 lines
1.1 KiB
JavaScript
62 lines
1.1 KiB
JavaScript
const mongoose = require('mongoose');
|
|
|
|
const activitySchema = new mongoose.Schema({
|
|
companyId: {
|
|
type: String,
|
|
required: true,
|
|
index: true
|
|
},
|
|
userId: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
type: {
|
|
type: String,
|
|
enum: [
|
|
'message_received',
|
|
'message_sent',
|
|
'request_received',
|
|
'request_sent',
|
|
'request_response',
|
|
'product_accepted',
|
|
'review_received',
|
|
'profile_updated',
|
|
'product_added',
|
|
'buy_product_added'
|
|
],
|
|
required: true
|
|
},
|
|
title: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
description: {
|
|
type: String
|
|
},
|
|
relatedCompanyId: {
|
|
type: String
|
|
},
|
|
relatedCompanyName: {
|
|
type: String
|
|
},
|
|
metadata: {
|
|
type: mongoose.Schema.Types.Mixed
|
|
},
|
|
read: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
createdAt: {
|
|
type: Date,
|
|
default: Date.now,
|
|
index: true
|
|
}
|
|
});
|
|
|
|
// Индексы для оптимизации
|
|
activitySchema.index({ companyId: 1, createdAt: -1 });
|
|
activitySchema.index({ companyId: 1, read: 1, createdAt: -1 });
|
|
|
|
module.exports = mongoose.model('Activity', activitySchema);
|
|
|