first commit
هذا الالتزام موجود في:
33
src/modules/chat/schemas/message.schema.ts
Normal file
33
src/modules/chat/schemas/message.schema.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
|
||||
import { HydratedDocument, Types } from 'mongoose';
|
||||
import { User } from '../../users/schemas/user.schema';
|
||||
|
||||
export type MessageDocument = HydratedDocument<Message>;
|
||||
|
||||
@Schema({ timestamps: true, versionKey: false })
|
||||
export class Message {
|
||||
@Prop({ type: Types.ObjectId, required: true, index: true })
|
||||
conversationId!: Types.ObjectId;
|
||||
|
||||
@Prop({ type: Types.ObjectId, ref: User.name, required: true, index: true })
|
||||
senderId!: Types.ObjectId;
|
||||
|
||||
@Prop({ required: false, default: '', maxlength: 4000 })
|
||||
content!: string;
|
||||
|
||||
@Prop({ enum: ['text', 'image', 'video', 'audio'], default: 'text', index: true })
|
||||
messageType!: 'text' | 'image' | 'video' | 'audio';
|
||||
|
||||
@Prop({ required: false, default: '' })
|
||||
mediaUrl!: string;
|
||||
|
||||
@Prop({ type: [Types.ObjectId], ref: User.name, default: [] })
|
||||
seenBy!: Types.ObjectId[];
|
||||
|
||||
@Prop({ default: false, index: true })
|
||||
isUnsent!: boolean;
|
||||
}
|
||||
|
||||
export const MessageSchema = SchemaFactory.createForClass(Message);
|
||||
MessageSchema.index({ conversationId: 1, createdAt: -1 });
|
||||
MessageSchema.index({ conversationId: 1, isUnsent: 1, createdAt: -1 });
|
||||
المرجع في مشكلة جديدة
حظر مستخدم