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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 9x 9x 9x 9x 9x 9x 20x 20x 20x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { InjectRepository } from '@nestjs/typeorm'; import { SubwayEntity } from 'src/entities/subway.entity'; import { SubwayLineEntity } from 'src/entities/subway_line.entity'; import { SubwayStationEntity } from 'src/entities/subway_station.entity'; import { StationInfo } from 'src/subway/interfaces/subway.interfaces'; import { Repository } from 'typeorm'; export class SubwayQueryRepository { constructor( @InjectRepository(SubwayEntity) private repository: Repository<SubwayEntity>, @InjectRepository(SubwayStationEntity) private subwayStationRepository: Repository<SubwayStationEntity>, @InjectRepository(SubwayLineEntity) private subwayLineRepository: Repository<SubwayLineEntity>, ) {} async groupByCustoms(stationInfo: StationInfo) { return this.repository .createQueryBuilder('subway') .select('subway.place_type', 'type') .addSelect('COUNT(subway.id)', 'count') .where('subway.name = :name AND subway.line = :line', { name: stationInfo.station, line: stationInfo.line, }) .groupBy('subway.place_type') .getRawMany(); } async findSubwayCurrentCulture(stationInfo: StationInfo) { const now = new Date(); return this.repository .createQueryBuilder('subway') .leftJoinAndSelect('place', 'p', 'p.uuid = subway.place_uuid') .select('subway.place_type', 'type') .addSelect('COUNT(subway.id)', 'count') .where('subway.name = :name AND subway.line = :line', { name: stationInfo.station, line: stationInfo.line, }) .andWhere('subway.place_type IN (:...types)', { types: ['팝업', '전시'], }) .andWhere('p.end_date > :now', { now }) .groupBy('subway.place_type') .getRawMany(); } async subwayStationList(lineUuid: string): Promise<SubwayStationEntity[]> { return this.subwayStationRepository.find({ where: { line_uuid: lineUuid }, order: { id: 'ASC' }, }); } async findSubwayLine(): Promise<SubwayLineEntity[]> { return this.subwayLineRepository.find({ order: { id: 'ASC' }, }); } async findSubway(subway: string): Promise<SubwayStationEntity[]> { return this.subwayStationRepository.find({ where: { name: subway }, }); } async findLineAndStation( lineUuid: string, stationUuid: string, ): Promise<{ line: string; station: string; }> { const result = await this.subwayStationRepository.findOne({ where: { uuid: stationUuid, line_uuid: lineUuid }, }); return { line: result.line, station: result.name }; } async findSubwayStationUuid(subwayUuid: string): Promise<SubwayStationEntity> { return this.subwayStationRepository.findOne({ where: { uuid: subwayUuid }, }); } async findSubwayStationName(subwayName: string): Promise<SubwayStationEntity> { return this.subwayStationRepository.findOne({ where: { name: subwayName }, }); } async findAllLinesForStation(subwayUuid: string): Promise<SubwayStationEntity[]> { return this.subwayStationRepository .createQueryBuilder('subway') .where('subway.uuid = :subwayUuid', { subwayUuid }) .orWhere('subway.name = (SELECT name FROM subway_station WHERE uuid = :subwayUuid)', { subwayUuid, }) .getMany(); } } |