perf(backend): ретенция track_plays, прун сирот-треков, проекция now-playing, пул БД
- MaintenanceService (@Cron daily 4:00): ретенция track_plays >180д чанками по 20k (без ретенции таблица растёт ~100k строк/сутки) + прун осиротевших треков (без проигрываний/лайков/обложки, >30д). Сейчас удаляет 0 (данным 4 дня) — только ограничивает будущий рост. ВНИМАНИЕ: 180д ограничивает и чарт period=all. - getAllNowPlaying: select-проекция (stationId+name) вместо include station:true — не тянем всю строку Station (streamUrl, tags[], даты) на каждый ряд now_playing. - PrismaService: connection_limit=20 в URL идемпотентно (дефолт ~5 мал под ~16 конкурентных поллеров).
This commit is contained in:
@@ -217,8 +217,15 @@ export class NowPlayingService {
|
||||
}
|
||||
|
||||
async getAllNowPlaying() {
|
||||
// Проекция: контроллеру нужны только stationId+name станции и трек —
|
||||
// не тянем всю строку Station (streamUrl, tags[], даты и т.д.) на каждый ряд.
|
||||
const list = await this.prisma.nowPlaying.findMany({
|
||||
include: { station: true },
|
||||
select: {
|
||||
artist: true,
|
||||
song: true,
|
||||
coverUrl: true,
|
||||
station: { select: { stationId: true, name: true } },
|
||||
},
|
||||
});
|
||||
|
||||
// Для записей без своей обложки (ICY-станции типа DFM) подтягиваем обложку
|
||||
|
||||
Reference in New Issue
Block a user