mirror of
https://github.com/amineo/t2-stat-parser.git
synced 2026-01-20 01:34:47 +00:00
Setup return games with details endpoint
This commit is contained in:
parent
f240ccd306
commit
96e15be86d
|
|
@ -13,6 +13,7 @@ import { Players } from '../players/entities/Players';
|
|||
@Module({
|
||||
imports: [ TypeOrmModule.forFeature([ Games, GameDetail, Players ]), ConfigModule ],
|
||||
controllers: [ GameController ],
|
||||
providers: [ GameService ]
|
||||
providers: [ GameService ],
|
||||
exports: [ GameService ]
|
||||
})
|
||||
export class GameModule {}
|
||||
|
|
|
|||
|
|
@ -6,20 +6,29 @@ import { PaginationQueryDto } from '../common/dto/pagination-query.dto';
|
|||
|
||||
@Controller('games')
|
||||
export class GamesController {
|
||||
constructor(private readonly gameService: GamesService) {}
|
||||
constructor(private readonly gamesService: GamesService) {}
|
||||
|
||||
// /games
|
||||
@Get()
|
||||
@ApiOperation({ tags: [ 'Game' ], summary: 'Return the latest games' })
|
||||
findAll(@Query() paginationQuery: PaginationQueryDto) {
|
||||
const { limit = 10, offset = 0 } = paginationQuery;
|
||||
return this.gameService.findAll({ limit, offset });
|
||||
return this.gamesService.findAll({ limit, offset });
|
||||
}
|
||||
|
||||
// /games/summary
|
||||
@Get('summary')
|
||||
@ApiOperation({ tags: [ 'Game' ], summary: 'Return the latest games with summary' })
|
||||
findAllWithSummary(@Query() paginationQuery: PaginationQueryDto) {
|
||||
const { limit = 10, offset = 0 } = paginationQuery;
|
||||
|
||||
return this.gamesService.findAllWithSummary({ limit, offset });
|
||||
}
|
||||
|
||||
// /gametype/:gametype
|
||||
@Get('gametype/:gametype')
|
||||
@ApiOperation({ tags: [ 'Game' ], summary: 'Return the latest games by game type' })
|
||||
findByType(@Param('gametype') gametype: string) {
|
||||
return this.gameService.findByType(gametype);
|
||||
return this.gamesService.findByType(gametype);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,10 @@ import { GamesService } from './games.service';
|
|||
|
||||
import { Games } from './entities/Games';
|
||||
import { GameDetail } from '../game/entities/GameDetail';
|
||||
import { GameModule } from '../game/game.module';
|
||||
|
||||
@Module({
|
||||
imports: [ TypeOrmModule.forFeature([ Games, GameDetail ]), ConfigModule ],
|
||||
imports: [ TypeOrmModule.forFeature([ Games, GameDetail ]), ConfigModule, GameModule ],
|
||||
controllers: [ GamesController ],
|
||||
providers: [ GamesService ]
|
||||
})
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||
import { Connection, Repository } from 'typeorm';
|
||||
|
||||
import { Games } from './entities/Games';
|
||||
import { GameService } from '../game/game.service';
|
||||
import { PaginationQueryDto } from '../common/dto/pagination-query.dto';
|
||||
|
||||
@Injectable()
|
||||
|
|
@ -11,6 +12,7 @@ export class GamesService {
|
|||
constructor(
|
||||
private readonly connection: Connection,
|
||||
private readonly configService: ConfigService,
|
||||
private readonly gameService: GameService,
|
||||
@InjectRepository(Games) private readonly gamesRepository: Repository<Games>
|
||||
) {}
|
||||
|
||||
|
|
@ -27,6 +29,27 @@ export class GamesService {
|
|||
return games;
|
||||
}
|
||||
|
||||
async findAllWithSummary(paginationQuery: PaginationQueryDto) {
|
||||
const { limit, offset } = paginationQuery;
|
||||
const games = await this.gamesRepository.find({
|
||||
skip: offset,
|
||||
take: limit,
|
||||
order: {
|
||||
gameId: 'DESC'
|
||||
}
|
||||
});
|
||||
|
||||
const withSummary = [];
|
||||
for (const game of games) {
|
||||
const summary = await this.gameService.findOne(game.gameId);
|
||||
withSummary.push(summary);
|
||||
}
|
||||
|
||||
// Game findOne service needs to bubble up the game details as parent object and set players below it
|
||||
|
||||
return withSummary;
|
||||
}
|
||||
|
||||
async findByType(gametype: string) {
|
||||
const game = await this.gamesRepository.find({
|
||||
where: { gametype: gametype },
|
||||
|
|
|
|||
Loading…
Reference in a new issue