All files / search search.query.repository.ts

100% Statements 17/17
100% Branches 0/0
100% Functions 10/10
100% Lines 14/14

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 743x 3x   3x   3x     8x       1x                   1x               1x       1x                     1x                   1x       1x                 2x   1x      
import { InjectRepository } from '@nestjs/typeorm';
import { SearchLogEntity } from 'src/entities/search_log.entity';
import { UserDto } from 'src/user/dto/user.dto';
import { In, IsNull, Repository } from 'typeorm';
 
export class SearchQueryRepository {
  constructor(
    @InjectRepository(SearchLogEntity)
    private repository: Repository<SearchLogEntity>,
  ) {}
 
  async findUserSearchLog(search: string, user: UserDto): Promise<SearchLogEntity[]> {
    return this.repository.find({
      where: {
        search,
        user_uuid: user.uuid,
        archived_at: IsNull(),
      },
    });
  }
 
  async addLog(search: string, uuid: string, user: UserDto) {
    return this.repository.insert({
      uuid,
      search,
      user_uuid: user.uuid,
    });
  }
 
  async updateSearchDate(id: number) {
    return this.repository.update({ id }, { updated_at: new Date() });
  }
 
  async findRecentUserLog(user: UserDto): Promise<SearchLogEntity[]> {
    return this.repository.find({
      where: {
        user_uuid: user.uuid,
        archived_at: IsNull(),
      },
      order: { updated_at: 'DESC' },
      take: 10,
    });
  }
 
  async findUserLogToUuid(uuid: string, user: UserDto): Promise<SearchLogEntity> {
    return this.repository.findOne({
      where: {
        uuid,
        user_uuid: user.uuid,
        archived_at: IsNull(),
      },
    });
  }
 
  async deleteSearchLog(searchLogEntity: SearchLogEntity) {
    return this.repository.update({ id: searchLogEntity.id }, { archived_at: new Date() });
  }
 
  async findUserTotalSearchLog(user: UserDto): Promise<SearchLogEntity[]> {
    return this.repository.find({
      where: {
        user_uuid: user.uuid,
        archived_at: IsNull(),
      },
    });
  }
 
  async updateDateDelete(userTotalSearchLog: SearchLogEntity[]): Promise<void> {
    const ids = userTotalSearchLog.map((entity) => entity.id);
 
    await this.repository.update({ id: In(ids) }, { archived_at: new Date() });
  }
}