All files / notification notification.query.repository.ts

100% Statements 12/12
100% Branches 2/2
100% Functions 5/5
100% Lines 10/10

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 498x 8x       8x   8x     16x       1x             2x         2x               1x           1x                
import { InjectRepository } from '@nestjs/typeorm';
import { NotificationEntity } from 'src/entities/notification.entity';
import { ApiNotificationGetListRequestQueryDto } from 'src/notification/dto/api-notification-get-list-request-query.dto';
import { NotificationPushDto } from 'src/notification/dto/notification.dto';
import { UserDto } from 'src/user/dto/user.dto';
import { LessThan, Repository, UpdateResult } from 'typeorm';
 
export class NotificationQueryRepository {
  constructor(
    @InjectRepository(NotificationEntity)
    private repository: Repository<NotificationEntity>,
  ) {}
 
  async sendNotification(notificationData: NotificationPushDto): Promise<NotificationEntity> {
    return this.repository.save(notificationData);
  }
 
  async findList(
    dto: ApiNotificationGetListRequestQueryDto,
    user: UserDto,
  ): Promise<NotificationEntity[]> {
    const whereConditions = {
      target_user_uuid: user.uuid,
      ...(dto.last_id > 0 ? { id: LessThan(dto.last_id) } : {}),
    };
 
    return this.repository.find({
      where: whereConditions,
      order: { created_at: 'DESC' },
      take: dto.size,
    });
  }
 
  async findNotification(uuid: string): Promise<NotificationEntity> {
    return this.repository.findOne({
      where: { uuid },
    });
  }
 
  async updateRead(uuid: string): Promise<UpdateResult> {
    return this.repository.update(
      {
        uuid,
      },
      { read_at: new Date() },
    );
  }
}