import { createHash } from 'crypto' import { useDb } from '../../utils/db' export default defineEventHandler((event) => { const db = useDb() const id = getRouterParam(event, 'id') const ip = getRequestIP(event, { xForwardedFor: true }) || 'unknown' const voterHash = createHash('sha256').update(ip + ':' + id).digest('hex') try { db.prepare('INSERT INTO vote_log (idea_id, voter_hash) VALUES (?, ?)').run(id, voterHash) db.prepare('UPDATE ideas SET votes = votes + 1 WHERE id = ?').run(id) } catch { throw createError({ statusCode: 409, statusMessage: 'Already voted' }) } const row = db.prepare('SELECT votes FROM ideas WHERE id = ?').get(id) as any return { votes: row?.votes ?? 0 } })