diff --git a/backend/mainServer/src/memory-db/memory-db.service.ts b/backend/mainServer/src/memory-db/memory-db.service.ts index 116e19ed..33a45cdc 100644 --- a/backend/mainServer/src/memory-db/memory-db.service.ts +++ b/backend/mainServer/src/memory-db/memory-db.service.ts @@ -67,12 +67,8 @@ export class MemoryDBService { return getRandomElementsFromArray(liveSession, count); } - getBroadcastInfo(size: number, dtoTransformer: (info: MemoryDbDto) => T, checker: (item: MemoryDbDto) => boolean, appender: number = 0) { - const findSession = this.db.filter(item => checker(item)).sort((a: MemoryDbDto, b: MemoryDbDto) => { - const aDate = a.endDate ? a.endDate.getTime() : 0; - const bDate = b.endDate ? b.endDate.getTime() : 0; - return aDate - bDate; - }); + getBroadcastInfo(size: number, dtoTransformer: (info: MemoryDbDto) => T, checker: (item: MemoryDbDto) => boolean, compare: (a: MemoryDbDto, b: MemoryDbDto) => number, appender: number = 0) { + const findSession = this.db.filter(item => checker(item)).sort((a: MemoryDbDto, b: MemoryDbDto) => compare(a, b)); if (findSession.length < size) { const findSessionRev = findSession.reverse().map((info) => dtoTransformer(info)); return [[...findSessionRev], []]; diff --git a/backend/mainServer/src/replay/replay.controller.ts b/backend/mainServer/src/replay/replay.controller.ts index 0430e60b..59d004d7 100644 --- a/backend/mainServer/src/replay/replay.controller.ts +++ b/backend/mainServer/src/replay/replay.controller.ts @@ -17,7 +17,12 @@ export class ReplayController { async getLatestReplay(@Res() res: Response) { try { const replayChecker = (item: MemoryDbDto) => { return item.replay && !item.state; }; - const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo(8, memoryDbDtoToReplayVideoDto, replayChecker, 8); + const compare = (a: MemoryDbDto, b: MemoryDbDto) => { + const aTime = a.startDate ? a.startDate.getTime() : 0; + const bTime = b.startDate ? b.startDate.getTime() : 0; + return aTime - bTime; + }; + const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo(8, memoryDbDtoToReplayVideoDto, replayChecker, compare, 8); res.status(HttpStatus.OK).json({info: serchedData, appendInfo: appendData}); } catch (error) { if ((error as { status: number }).status === 400) { diff --git a/backend/mainServer/src/streams/streams.controller.ts b/backend/mainServer/src/streams/streams.controller.ts index 47cb3c5a..ed043f59 100644 --- a/backend/mainServer/src/streams/streams.controller.ts +++ b/backend/mainServer/src/streams/streams.controller.ts @@ -37,7 +37,12 @@ export class StreamsController { async getLatestSession(@Res() res: Response) { try { const streamChecker = (item: MemoryDbDto) => item.state; - const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo(8, fromLiveSessionDto, streamChecker, 8); + const compare = (a: MemoryDbDto, b: MemoryDbDto) => { + const aTime = a.startDate ? a.startDate.getTime() : 0; + const bTime = b.startDate ? b.startDate.getTime() : 0; + return aTime - bTime; + }; + const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo(8, fromLiveSessionDto, streamChecker, compare, 8); res.status(HttpStatus.OK).json({info: serchedData, appendInfo: appendData}); } catch (error) { if ((error as { status: number }).status === 400) {