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 | 11x 11x 11x 11x 11x 20x 20x 1x 1x 2x 2x 2x 5x 7x 1x 9x 4x 4x | import { InjectRepository } from '@nestjs/typeorm';
import { ApiCourseGetMyHistoryRequestQueryDto } from 'src/course/dto/api-course-get-my-history-request-query.dto';
import { CourseDetailEntity } from 'src/entities/course.detail.entity';
import { CourseEntity } from 'src/entities/course.entity';
import { UserDto } from 'src/user/dto/user.dto';
import { In, LessThan, Repository } from 'typeorm';
export class CourseQueryRepository {
constructor(
@InjectRepository(CourseEntity)
private repository: Repository<CourseEntity>,
@InjectRepository(CourseDetailEntity)
private detailRepository: Repository<CourseDetailEntity>,
) {}
async saveCourse(courseEntity: CourseEntity): Promise<CourseEntity> {
return this.repository.save(courseEntity);
}
async saveCourseDetail(courseDetailEntity: CourseDetailEntity): Promise<CourseDetailEntity> {
return this.detailRepository.save(courseDetailEntity);
}
async findUserHistoryCourse(uuid: string): Promise<CourseDetailEntity[]> {
const sevenDaysAgo = new Date();
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
return this.detailRepository
.createQueryBuilder('courseDetail')
.innerJoin('courseDetail.course', 'course')
.where('course.user_uuid = :uuid', { uuid })
.andWhere('course.created_at >= :sevenDaysAgo', { sevenDaysAgo })
.select('courseDetail.place_uuid')
.getMany();
}
async findCourse(uuid: string): Promise<CourseEntity> {
return this.repository.findOne({
where: { uuid },
});
}
async findPlace(courseUuid: string): Promise<CourseDetailEntity[]> {
return this.detailRepository
.createQueryBuilder('courseDetail')
.leftJoinAndSelect('courseDetail.place', 'place')
.where('courseDetail.course_uuid = :courseUuid', { courseUuid })
.select(['courseDetail', 'place'])
.getMany();
}
async findList(uuids: string[]): Promise<CourseEntity[]> {
return this.repository.find({
where: { uuid: In(uuids) },
});
}
async findOne(uuid: string): Promise<CourseEntity> {
return this.repository.findOne({
where: { uuid },
});
}
async findMyCourse(
dto: ApiCourseGetMyHistoryRequestQueryDto,
user: UserDto,
): Promise<CourseEntity[]> {
const whereConditions = {
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,
});
}
}
|