const mongoose = require('mongoose'); const TicketActivitySchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, index: true }, date: { type: Date, required: true, index: true }, // Счетчики для разных типов активности postsCreated: { type: Number, default: 0 }, likesGiven: { type: Number, default: 0 }, likesReceived: { type: Number, default: 0 }, commentsWritten: { type: Number, default: 0 }, commentsReceived: { type: Number, default: 0 }, // Для отслеживания баллов с реакций на арты (по постам) // Используем объект вместо Map для совместимости с Mongoose artReactionsPoints: { type: mongoose.Schema.Types.Mixed, default: {} }, artsModerated: { type: Number, default: 0 }, // Количество артов, прошедших модерацию createdAt: { type: Date, default: Date.now } }, { timestamps: true }); // Индекс для быстрого поиска по пользователю и дате TicketActivitySchema.index({ user: 1, date: 1 }, { unique: true }); // Метод для получения или создания активности за сегодня (по московскому времени) TicketActivitySchema.statics.getOrCreateToday = async function(userId) { const { getMoscowDate } = require('../utils/moscowTime'); const today = getMoscowDate(); let activity = await this.findOne({ user: userId, date: today }); if (!activity) { activity = new this({ user: userId, date: today }); await activity.save(); } return activity; }; module.exports = mongoose.model('TicketActivity', TicketActivitySchema);