// chat-room.js // Copyright (C) 2024 DTP Technologies, LLC // All Rights Reserved 'use strict'; import { MIN_ROOM_CAPACITY, MAX_ROOM_CAPACITY } from './lib/constants.js'; import mongoose from 'mongoose'; const Schema = mongoose.Schema; const ChatRoomSchema = new Schema({ created: { type: Date, default: Date.now, required: true, index: 1 }, lastActivity: { type: Date, index: -1 }, owner: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, name: { type: String, required: true }, topic: { type: String }, capacity: { type: Number, required: true, min: MIN_ROOM_CAPACITY, max: MAX_ROOM_CAPACITY }, invites: { type: [Schema.ObjectId], select: false }, members: { type: [Schema.ObjectId], select: false }, present: { type: [Schema.ObjectId], select: false }, banned: { type: [Schema.ObjectId], select: false }, stats: { memberCount: { type: Number, default: 0, min: 0, max: MAX_ROOM_CAPACITY, required: true }, presentCount: { type: Number, default: 0, min: 0, max: MAX_ROOM_CAPACITY, required: true }, }, }); export default mongoose.model('ChatRoom', ChatRoomSchema);