import { sql } from '@vercel/postgres'; import { getUserFromRequest } from '../../../../lib/permission-middleware'; export default async function handler(req, res) { const { id } = req.query; if (req.method === 'GET') { try { // Get authenticated user const user = await getUserFromRequest(req); if (!user) { return res.status(401).json({ error: 'Authentication required' }); } // Get decks that contain this card and belong to the user const result = await sql` SELECT DISTINCT d.id, d.name, d.description, dc.quantity FROM decks d JOIN deck_cards dc ON d.id = dc.deck_id WHERE dc.card_id = ${id} AND d.user_id = ${user.userId} ORDER BY d.name `; res.status(200).json(result.rows); } catch (error) { console.error('Error fetching card decks:', error); res.status(500).json({ error: 'Failed to fetch card decks' }); } } else if (req.method === 'POST') { try { // Get authenticated user const user = await getUserFromRequest(req); if (!user) { return res.status(401).json({ error: 'Authentication required' }); } const { deckId } = req.body; // Check if user owns this deck const deckCheck = await sql` SELECT id, name FROM decks WHERE id = ${deckId} AND user_id = ${user.userId} `; if (deckCheck.rows.length === 0) { return res.status(403).json({ error: 'Deck not found or access denied' }); } // Add card to deck await sql` INSERT INTO deck_cards (deck_id, card_id, quantity) VALUES (${deckId}, ${id}, 1) ON CONFLICT (deck_id, card_id) DO UPDATE SET quantity = deck_cards.quantity + 1 `; res.status(200).json({ success: true, message: 'Card added to deck' }); } catch (error) { console.error('Error adding card to deck:', error); res.status(500).json({ error: 'Failed to add card to deck' }); } } else { res.status(405).json({ error: 'Method not allowed' }); } }