Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 5x 5x 5x 5x 5x 5x 5x 5x 17x 17x 3x 3x 1x 2x 4x 2x 2x 4x 6x 3x 3x 2x 1x 1x | import { Injectable, NotFoundException } from '@nestjs/common';
import { plainToInstance } from 'class-transformer';
import { ERROR } from 'src/commons/constants/error';
import { LastItemIdResponseDto } from 'src/commons/dtos/last-item-id-response.dto';
import { UuidResponseDto } from 'src/commons/dtos/uuid-response.dto';
import { isEmpty } from 'src/commons/util/is/is-empty';
import { ApiNotificationGetListRequestQueryDto } from 'src/notification/dto/api-notification-get-list-request-query.dto';
import { ApiNotificationGetListResponseDto } from 'src/notification/dto/api-notification-get-list-response.dto';
import { NotificationQueryRepository } from 'src/notification/notification.query.repository';
import { UserDto } from 'src/user/dto/user.dto';
import { UserQueryRepository } from 'src/user/user.query.repository';
@Injectable()
export class NotificationService {
constructor(
private readonly notificationQueryRepository: NotificationQueryRepository,
private readonly userQueryRepository: UserQueryRepository,
) {}
async notificationList(
dto: ApiNotificationGetListRequestQueryDto,
user: UserDto,
): Promise<LastItemIdResponseDto<ApiNotificationGetListResponseDto>> {
const notificationList = await this.notificationQueryRepository.findList(dto, user);
if (notificationList.length === 0) {
return { items: [], last_item_id: 0 };
}
const userList = await this.userQueryRepository.findUserList(
notificationList.map((item) => item.user_uuid),
);
const lastItemId =
notificationList.length === dto.size ? notificationList[notificationList.length - 1].id : 0;
return {
items: plainToInstance(ApiNotificationGetListResponseDto, notificationList, {
excludeExtraneousValues: true,
}).map((notification) => ({
...notification,
user_thumbnail: userList.find((item) => item.uuid === notification.user_uuid).profile_image,
})),
last_item_id: lastItemId,
};
}
async notificationRead(uuid: string, user: UserDto): Promise<UuidResponseDto> {
const notification = await this.notificationQueryRepository.findNotification(uuid);
if (isEmpty(notification) || notification.target_user_uuid !== user.uuid) {
throw new NotFoundException(ERROR.NOT_EXIST_DATA);
}
await this.notificationQueryRepository.updateRead(uuid);
return { uuid };
}
}
|