feat(stations): корректный health-check + эндпоинт offline-ids
health-check переписан: живой = пришли заголовки 200-399 (рвём соединение сразу, не ждём бесконечное тело аудиопотока), параллельно, прогон при старте + ежечасно. Раньше GET висел на живых потоках до таймаута → ложный offline. Новый GET /stations/offline-ids отдаёт station_id оффлайн-станций — клиент их скрывает. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,12 @@ export class StationsController {
|
||||
});
|
||||
}
|
||||
|
||||
@Get('offline-ids')
|
||||
@ApiOperation({ summary: 'station_id оффлайн-станций (для скрытия в клиенте)' })
|
||||
async offlineIds() {
|
||||
return this.stationsService.getOfflineStationIds();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
@ApiOperation({ summary: 'Get station by ID' })
|
||||
async findOne(@Param('id') id: string) {
|
||||
|
||||
@@ -35,6 +35,15 @@ export class StationsService {
|
||||
});
|
||||
}
|
||||
|
||||
// station_id оффлайн-станций — для скрытия мёртвых плиток в клиенте
|
||||
async getOfflineStationIds(): Promise<number[]> {
|
||||
const rows = await this.prisma.station.findMany({
|
||||
where: { isOnline: false },
|
||||
select: { stationId: true },
|
||||
});
|
||||
return rows.map((r) => r.stationId);
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const station = await this.prisma.station.findUnique({
|
||||
where: { id },
|
||||
|
||||
Reference in New Issue
Block a user