From aa75fdd63eec0efc60a0bfa12edd4c6ede488622 Mon Sep 17 00:00:00 2001 From: alikia2x Date: Mon, 31 Mar 2025 06:05:59 +0800 Subject: [PATCH] fix: incorrect schema check for numbers --- packages/backend/main.ts | 2 +- packages/backend/snapshots.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/backend/main.ts b/packages/backend/main.ts index a3b7395..2d7bc02 100644 --- a/packages/backend/main.ts +++ b/packages/backend/main.ts @@ -17,4 +17,4 @@ export default { fetch, } satisfies Deno.ServeDefaultExport; -export const VERSION = "0.2.1"; \ No newline at end of file +export const VERSION = "0.2.2"; \ No newline at end of file diff --git a/packages/backend/snapshots.ts b/packages/backend/snapshots.ts index a4de024..6be9d70 100644 --- a/packages/backend/snapshots.ts +++ b/packages/backend/snapshots.ts @@ -6,9 +6,9 @@ import type { VideoSnapshotType } from "@core/db/schema.d.ts"; import { boolean, mixed, number, object, ValidationError } from "yup"; const SnapshotQueryParamsSchema = object({ - ps: number().optional().positive(), - pn: number().optional().positive(), - offset: number().optional().positive(), + ps: number().integer().optional().positive(), + pn: number().integer().optional().positive(), + offset: number().integer().optional().positive(), reverse: boolean().optional(), }); @@ -16,8 +16,9 @@ const idSchema = mixed().test( "is-valid-id", 'id must be a string starting with "av" followed by digits, or "BV" followed by 10 alphanumeric characters, or a positive integer', async (value) => { - if (value && await number().isValid(value)) { - return Number.isInteger(value) && (value as number) > 0; + if (value && await number().integer().isValid(value)) { + const v = parseInt(value as string); + return Number.isInteger(v) && v > 0; } if (typeof value === "string") {