diff options
| author | Fuwn <[email protected]> | 2026-03-03 09:04:44 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-03 09:08:43 -0800 |
| commit | 6a44eac70c41bb1343a20ddf3ce775e416214d75 (patch) | |
| tree | c5128228834222a1a6f0cc93869215a806bd9a0a /src/routes/api/badges/+server.ts | |
| parent | refactor(effect): migrate api auth cookie decoding (diff) | |
| download | due.moe-6a44eac70c41bb1343a20ddf3ce775e416214d75.tar.xz due.moe-6a44eac70c41bb1343a20ddf3ce775e416214d75.zip | |
refactor(effect): add request body schema decoders to api routes
Diffstat (limited to 'src/routes/api/badges/+server.ts')
| -rw-r--r-- | src/routes/api/badges/+server.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index abd5c0cd..912782dd 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -1,5 +1,6 @@ import { userIdentity } from "$lib/Data/AniList/identity"; import { decodeAuthCookieOrThrow } from "$lib/Effect/authCookie"; +import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { removeAllUserBadges, removeUserBadge, @@ -7,14 +8,17 @@ import { getUserBadges, addUserBadge, type Badge, + type BadgeInput, migrateCategory, setShadowHidden, setShadowHiddenBadge, incrementClickCount, } from "$lib/Database/SB/User/badges"; +import { Schema } from "effect"; import privilegedUser from "$lib/Utility/privilegedUser"; const unauthorised = new Response("Unauthorised", { status: 401 }); +const importedBadgeSchema = Schema.Record(Schema.String, Schema.Unknown); const badges = async (id: number) => Response.json(await getUserBadges(id), { @@ -65,9 +69,15 @@ export const PUT = async ({ cookies, url, request }) => { setShadowHidden(Number(url.searchParams.get("shadowHide")), authorised); if (url.searchParams.get("import") || undefined) { + const importedBadges = await decodeRequestJsonOrThrow( + request, + Schema.Array(importedBadgeSchema), + ); + await Promise.all( - (await request.json()).map( - async (badge: Badge) => await addUserBadge(identity.id, badge), + importedBadges.map( + async (badge) => + await addUserBadge(identity.id, badge as unknown as BadgeInput), ), ); |