ChatModel - IEEE-Team-3/map GitHub Wiki

Schema Overview

Chats are divided into two types: team and dm (direct messages).

Fields

  • id: Unique chat ID
  • type: "team" | "dm"
  • name: Channel name (for team chats)
  • participants: List of user IDs
  • messages: Reference to messages
  • locked: Boolean (whether chat is locked)
  • lockedBy: User ID who locked the chat
  • teamId: (if team chat)

Mongoose Example

const ChatSchema = new Schema({
  type: { type: String, enum: ['team', 'dm'], required: true },
  name: String,
  participants: [{ type: Schema.Types.ObjectId, ref: 'User' }],
  messages: [{ type: Schema.Types.ObjectId, ref: 'Message' }],
  locked: { type: Boolean, default: false },
  lockedBy: { type: Schema.Types.ObjectId, ref: 'User' },
  teamId: { type: Schema.Types.ObjectId, ref: 'Team' }
});

Notes

  • When locked = true, messages cannot be sent, but can still be viewed.
  • Only users with specific roles (e.g., Team Owner, Admin) can lock/unlock a chat.
⚠️ **GitHub.com Fallback** ⚠️