All files / notice notice.query.repository.ts

100% Statements 11/11
100% Branches 2/2
100% Functions 4/4
100% Lines 9/9

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 353x 3x   3x   3x     4x       1x       1x           2x         2x              
import { InjectRepository } from '@nestjs/typeorm';
import { NoticeEntity } from 'src/entities/notice.entity';
import { ApiNoticeGetRequestQueryDto } from 'src/notice/dto/api-notice-get-request-query.dto';
import { IsNull, LessThan, Repository } from 'typeorm';
 
export class NoticeQueryRepository {
  constructor(
    @InjectRepository(NoticeEntity)
    private repository: Repository<NoticeEntity>,
  ) {}
 
  async save(noticeEntity: NoticeEntity): Promise<NoticeEntity> {
    return this.repository.save(noticeEntity);
  }
 
  async findOne(uuid: string): Promise<NoticeEntity> {
    return this.repository.findOne({
      where: { uuid, archived_at: IsNull() },
    });
  }
 
  async find(dto: ApiNoticeGetRequestQueryDto): Promise<NoticeEntity[]> {
    const whereConditions = {
      archived_at: IsNull(),
      ...(dto.last_id > 0 ? { id: LessThan(dto.last_id) } : {}),
    };
 
    return this.repository.find({
      where: whereConditions,
      order: { published_at: 'DESC' },
      take: dto.size,
    });
  }
}