import { LatestSnapshotType } from "@core/db/schema"; import { SnapshotNumber } from "mq/task/getVideoStats.ts"; import type { Psql } from "@core/db/global.d.ts"; export async function getVideosNearMilestone(sql: Psql) { const queryResult = await sql` SELECT ls.* FROM latest_video_snapshot ls RIGHT JOIN songs ON songs.aid = ls.aid WHERE (views >= 50000 AND views < 100000) OR (views >= 900000 AND views < 1000000) OR (views >= 9900000 AND views < 10000000) UNION SELECT ls.* FROM latest_video_snapshot ls WHERE (views >= 90000 AND views < 100000) OR (views >= 900000 AND views < 1000000) OR (views >= 9900000 AND views < 10000000) `; return queryResult.map((row) => { return { ...row, aid: Number(row.aid), }; }); } export async function getLatestVideoSnapshot(sql: Psql, aid: number): Promise { const queryResult = await sql` SELECT * FROM latest_video_snapshot WHERE aid = ${aid} `; if (queryResult.length === 0) { return null; } return queryResult.map((row) => { return { ...row, aid: Number(row.aid), time: new Date(row.time).getTime(), }; })[0]; }