diff --git a/src/routes/getSkipSegments.ts b/src/routes/getSkipSegments.ts index 368d250..660ea69 100644 --- a/src/routes/getSkipSegments.ts +++ b/src/routes/getSkipSegments.ts @@ -262,7 +262,7 @@ async function chooseSegments(videoID: VideoID, service: Service, segments: DBSe const fetchData = async () => await buildSegmentGroups(segments); const groups = useCache - ? await QueryCacher.get(fetchData, skipSegmentGroupsKey(videoID, service)) + ? await QueryCacher.get(fetchData, skipSegmentGroupsKey(videoID, service), false) : await fetchData(); // Filter for only 1 item for POI categories and Full video @@ -337,7 +337,7 @@ async function buildSegmentGroups(segments: DBSegment[]): Promise { const result: OverlappingSegmentGroup[] = []; - group.segments.forEach((segment) => { + for (const segment of group.segments) { const bestGroup = result.find((group) => { // At least one segment in the group must have high % overlap or the same action type // Since POI and Full video segments will always have <= 0 overlap, they will always be in their own groups @@ -360,7 +360,7 @@ function splitPercentOverlap(groups: OverlappingSegmentGroup[]): OverlappingSegm } else { result.push({ segments: [segment], votes: segment.votes, reputation: segment.reputation, locked: segment.locked, required: segment.required }); } - }); + } return result; }); diff --git a/src/utils/queryCacher.ts b/src/utils/queryCacher.ts index d4f8647..43d54c9 100644 --- a/src/utils/queryCacher.ts +++ b/src/utils/queryCacher.ts @@ -4,7 +4,7 @@ import { skipSegmentsHashKey, skipSegmentsKey, reputationKey, ratingHashKey, ski import { Service, VideoID, VideoIDHash } from "../types/segments.model"; import { Feature, HashedUserID, UserID } from "../types/user.model"; -async function get(fetchFromDB: () => Promise, key: string): Promise { +async function get(fetchFromDB: () => Promise, key: string, cacheEmpty = true): Promise { try { const reply = await redis.get(key); if (reply) { @@ -16,7 +16,9 @@ async function get(fetchFromDB: () => Promise, key: string): Promise { const data = await fetchFromDB(); - redis.set(key, JSON.stringify(data)).catch((err) => Logger.error(err)); + if (cacheEmpty || data) { + redis.set(key, JSON.stringify(data)).catch((err) => Logger.error(err)); + } return data; }