chat-app/src/messages/messages.service.ts

29 lines
1008 B
TypeScript

import { Injectable } from '@nestjs/common';
import { CreateMessageDto } from './dto/create-message.dto';
import { UpdateMessageDto } from './dto/update-message.dto';
import { InjectModel } from '@nestjs/mongoose';
import { Message, MessageDocument } from './schemas/message.schema';
import { Model } from 'mongoose';
import { UserDocument } from 'src/users/schemas/user.schema';
type PopulatedMessage = Omit<MessageDocument, 'senderId'> & {
senderId: UserDocument;
};
@Injectable()
export class MessagesService {
constructor(
@InjectModel(Message.name) private MessageModel: Model<MessageDocument>,
) {}
async create(createMessageDto: CreateMessageDto): Promise<MessageDocument> {
return await this.MessageModel.create(createMessageDto);
}
async findAll(convId: string): Promise<PopulatedMessage[]> {
return await this.MessageModel.find({ conversationId: convId })
.populate<{ senderId: UserDocument }>('senderId', 'name')
.sort({ createdAt: 1 })
.exec();
}
}