useRuntimeConfig() and better-sqlite3 were being called at module top-level, which crashes during Nitro server startup. Now all DB access is lazy via useDb(), and auth uses process.env directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
721 B
TypeScript
20 lines
721 B
TypeScript
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 }
|
|
})
|