29 lines
1008 B
TypeScript
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();
|
|
}
|
|
}
|