diff --git a/lib/db/snapshotSchedule.ts b/lib/db/snapshotSchedule.ts new file mode 100644 index 0000000..c719eb6 --- /dev/null +++ b/lib/db/snapshotSchedule.ts @@ -0,0 +1,11 @@ +import { Client } from "https://deno.land/x/postgres@v0.19.3/mod.ts"; + +export async function getUnsnapshotedSongs(client: Client) { + const queryResult = await client.queryObject<{ aid: bigint }>(` + SELECT DISTINCT s.aid + FROM songs s + LEFT JOIN video_snapshot v ON s.aid = v.aid + WHERE v.aid IS NULL; + `); + return queryResult.rows.map((row) => Number(row.aid)); +} diff --git a/lib/mq/init.ts b/lib/mq/init.ts index 95693ab..03a0aad 100644 --- a/lib/mq/init.ts +++ b/lib/mq/init.ts @@ -1,4 +1,4 @@ -import { MINUTE } from "$std/datetime/constants.ts"; +import { MINUTE, SECOND } from "$std/datetime/constants.ts"; import { ClassifyVideoQueue, LatestVideosQueue, SnapshotQueue } from "lib/mq/index.ts"; import logger from "lib/log/logger.ts"; @@ -15,8 +15,8 @@ export async function initMQ() { every: 3 * MINUTE, immediately: true, }); - await SnapshotQueue.upsertJobScheduler("scheduleSnapshotTick", { - every: 3 * MINUTE, + await SnapshotQueue.upsertJobScheduler("snapshotTick", { + every: 1 * SECOND, immediately: true, }); diff --git a/src/worker.ts b/src/worker.ts index c79e943..1b59785 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -56,15 +56,15 @@ const snapshotWorker = new Worker( "snapshot", async (job: Job) => { switch (job.name) { - case "scheduleSnapshotTick": - await snapshotTickWorker(job); - break; case "snapshotMilestoneVideo": await takeSnapshotForMilestoneVideoWorker(job); break; case "snapshotVideo": await takeSnapshotForVideoWorker(job); break; + case "snapshotTick": + await snapshotTickWorker(job); + break; default: break; }