From e50b0fa46df2838f8e9b722ab8d42799f9805df5 Mon Sep 17 00:00:00 2001 From: achmadss Date: Sat, 30 May 2026 03:38:50 +0700 Subject: [PATCH] fix: add DELETE and batch PUT endpoints for decks --- backend/src/lib/handlers/cards.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/backend/src/lib/handlers/cards.ts b/backend/src/lib/handlers/cards.ts index 1bea5f8..11dd13f 100644 --- a/backend/src/lib/handlers/cards.ts +++ b/backend/src/lib/handlers/cards.ts @@ -40,3 +40,28 @@ route('player/:steamId/decks/:index', ['PUT'], (ctx: HandlerContext) => { `).run(ctx.params.steamId, idx, name || 'My Deck', JSON.stringify(cards || []), name || 'My Deck', JSON.stringify(cards || [])); return { success: true }; }); + +route('player/:steamId/decks/:index', ['DELETE'], (ctx: HandlerContext) => { + const db = getDb(); + const idx = parseInt(ctx.params.index); + db.prepare('DELETE FROM decks WHERE steam_id = ? AND deck_index = ?').run(ctx.params.steamId, idx); + return { success: true }; +}); + +route('player/:steamId/decks', ['PUT'], (ctx: HandlerContext) => { + const { decks: decksToSave } = ctx.body as any; + if (!decksToSave) throw new HttpError(400, 'decks required'); + const db = getDb(); + const upsert = db.prepare(` + INSERT INTO decks (steam_id, deck_index, name, cards, updated_at) VALUES (?, ?, ?, ?, datetime('now')) + ON CONFLICT(steam_id, deck_index) DO UPDATE SET name = ?, cards = ?, updated_at = datetime('now') + `); + const tx = db.transaction(() => { + for (const [indexStr, deck] of Object.entries(decksToSave)) { + const d = deck as any; + upsert.run(ctx.params.steamId, parseInt(indexStr), d.name || 'My Deck', JSON.stringify(d.cards || []), d.name || 'My Deck', JSON.stringify(d.cards || [])); + } + }); + tx(); + return { success: true }; +});