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 }; } } |