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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 10x 1x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x 3x 3x 1x 2x 2x 2x 2x 1x 1x 1x 1x 2x 2x 1x 1x 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 { generateUUID } from 'src/commons/util/uuid';
import { NoticeEntity } from 'src/entities/notice.entity';
import { ApiNoticeGetDetailResponseDto } from 'src/notice/dto/api-notice-get-detail-response.dto';
import { ApiNoticeGetRequestQueryDto } from 'src/notice/dto/api-notice-get-request-query.dto';
import { ApiNoticeGetResponseDto } from 'src/notice/dto/api-notice-get-response.dto';
import { ApiNoticePostRequestBodyDto } from 'src/notice/dto/api-notice-post-request-body.dto';
import { ApiNoticePutRequestBodyDto } from 'src/notice/dto/api-notice-put-request-body.dto';
import { NoticeQueryRepository } from 'src/notice/notice.query.repository';
@Injectable()
export class NoticeService {
constructor(private readonly noticeQueryRepository: NoticeQueryRepository) {}
async createNotice(dto: ApiNoticePostRequestBodyDto) {
const noticeEntity = new NoticeEntity();
noticeEntity.uuid = generateUUID();
noticeEntity.title = dto.title;
noticeEntity.content = dto.content;
noticeEntity.published_at = dto.published_at;
await this.noticeQueryRepository.save(noticeEntity);
return { uuid: noticeEntity.uuid };
}
async getNoticeDetail(uuid: string) {
const notice: NoticeEntity = await this.noticeQueryRepository.findOne(uuid);
if (isEmpty(notice)) {
throw new NotFoundException(ERROR.NOT_EXIST_DATA);
}
return plainToInstance(ApiNoticeGetDetailResponseDto, notice, {
excludeExtraneousValues: true,
});
}
async getNoticeList(
dto: ApiNoticeGetRequestQueryDto,
): Promise<LastItemIdResponseDto<ApiNoticeGetResponseDto>> {
const noticeList: NoticeEntity[] = await this.noticeQueryRepository.find(dto);
if (noticeList.length === 0) {
return { items: [], last_item_id: 0 };
}
const lastItemId = noticeList.length === dto.size ? noticeList[noticeList.length - 1].id : 0;
return {
items: plainToInstance(ApiNoticeGetResponseDto, noticeList, {
excludeExtraneousValues: true,
}),
last_item_id: lastItemId,
};
}
async updateNotice(uuid: string, dto: ApiNoticePutRequestBodyDto): Promise<UuidResponseDto> {
const notice: NoticeEntity = await this.noticeQueryRepository.findOne(uuid);
if (isEmpty(notice)) {
throw new NotFoundException(ERROR.NOT_EXIST_DATA);
}
Object.assign(notice, dto);
await this.noticeQueryRepository.save(notice);
return { uuid };
}
async deleteNotice(uuid: string): Promise<UuidResponseDto> {
const notice: NoticeEntity = await this.noticeQueryRepository.findOne(uuid);
if (isEmpty(notice)) {
throw new NotFoundException(ERROR.NOT_EXIST_DATA);
}
notice.archived_at = new Date();
await this.noticeQueryRepository.save(notice);
return { uuid };
}
}
|