fix: SQL query to make WebStorm happy

This commit is contained in:
alikia2x (寒寒) 2025-04-05 18:34:06 +08:00
parent 33c6a3c1f8
commit 20668609dd
Signed by: alikia2x
GPG Key ID: 56209E0CCD8420C6

View File

@ -1,33 +1,48 @@
import { Client } from "https://deno.land/x/postgres@v0.19.3/mod.ts"; import type { Client } from "https://deno.land/x/postgres@v0.19.3/mod.ts";
import { VideoSnapshotType } from "./schema.d.ts"; import type { VideoSnapshotType } from "./schema.d.ts";
export async function getVideoSnapshots(client: Client, aid: number, limit: number, pageOrOffset: number, reverse: boolean, mode: 'page' | 'offset' = 'page') { export async function getVideoSnapshots(client: Client, aid: number, limit: number, pageOrOffset: number, reverse: boolean, mode: 'page' | 'offset' = 'page') {
const offset = mode === 'page' ? (pageOrOffset - 1) * limit : pageOrOffset; const offset = mode === 'page' ? (pageOrOffset - 1) * limit : pageOrOffset;
const order = reverse ? 'ASC' : 'DESC'; const queryDesc: string = `
const query = `
SELECT * SELECT *
FROM video_snapshot FROM video_snapshot
WHERE aid = $1 WHERE aid = $1
ORDER BY created_at ${order} ORDER BY created_at DESC
LIMIT $2 LIMIT $2
OFFSET $3 OFFSET $3
`; `;
const queryAsc: string = `
SELECT *
FROM video_snapshot
WHERE aid = $1
ORDER BY created_at
LIMIT $2 OFFSET $3
`;
const query = reverse ? queryAsc : queryDesc;
const queryResult = await client.queryObject<VideoSnapshotType>(query, [aid, limit, offset]); const queryResult = await client.queryObject<VideoSnapshotType>(query, [aid, limit, offset]);
return queryResult.rows; return queryResult.rows;
} }
export async function getVideoSnapshotsByBV(client: Client, bv: string, limit: number, pageOrOffset: number, reverse: boolean, mode: 'page' | 'offset' = 'page') { export async function getVideoSnapshotsByBV(client: Client, bv: string, limit: number, pageOrOffset: number, reverse: boolean, mode: 'page' | 'offset' = 'page') {
const offset = mode === 'page' ? (pageOrOffset - 1) * limit : pageOrOffset; const offset = mode === 'page' ? (pageOrOffset - 1) * limit : pageOrOffset;
const order = reverse ? 'ASC' : 'DESC'; const queryAsc = `
const query = `
SELECT vs.* SELECT vs.*
FROM video_snapshot vs FROM video_snapshot vs
JOIN bilibili_metadata bm ON vs.aid = bm.aid JOIN bilibili_metadata bm ON vs.aid = bm.aid
WHERE bm.bvid = $1 WHERE bm.bvid = $1
ORDER BY vs.created_at ${order} ORDER BY vs.created_at
LIMIT $2 LIMIT $2
OFFSET $3 OFFSET $3
`;
const queryDesc: string = `
SELECT *
FROM video_snapshot vs
JOIN bilibili_metadata bm ON vs.aid = bm.aid
WHERE bm.bvid = $1
ORDER BY vs.created_at DESC
LIMIT $2 OFFSET $3
` `
const query = reverse ? queryAsc : queryDesc;
const queryResult = await client.queryObject<VideoSnapshotType>(query, [bv, limit, offset]); const queryResult = await client.queryObject<VideoSnapshotType>(query, [bv, limit, offset]);
return queryResult.rows; return queryResult.rows;
} }