cvsa/packages/crawler/db/songs.ts

39 lines
1.0 KiB
TypeScript

import type { Psql } from "@core/db/psql.d.ts";
import { parseTimestampFromPsql } from "utils/formatTimestampToPostgre.ts";
export async function getNotCollectedSongs(sql: Psql) {
const rows = await sql<{ aid: number }[]>`
SELECT lr.aid
FROM labelling_result lr
WHERE lr.label != 0
AND NOT EXISTS (
SELECT 1
FROM songs s
WHERE s.aid = lr.aid
);
`;
return rows.map((row) => row.aid);
}
export async function aidExistsInSongs(sql: Psql, aid: number) {
const rows = await sql<{ exists: boolean }[]>`
SELECT EXISTS (
SELECT 1
FROM songs
WHERE aid = ${aid}
);
`;
return rows[0].exists;
}
export async function getSongsPublihsedAt(sql: Psql, aid: number) {
const rows = await sql<{ published_at: string }[]>`
SELECT published_at
FROM songs
WHERE aid = ${aid};
`;
if (rows.length === 0) {
return null;
}
return parseTimestampFromPsql(rows[0].published_at);
}