← back to Letsbegin
app/api/quickmode/route.ts
68 lines
import { NextRequest, NextResponse } from 'next/server'
import { Pool } from 'pg'
const DATABASE_URL = process.env.DATABASE_URL
if (!DATABASE_URL) {
throw new Error('DATABASE_URL environment variable is required')
}
const pool = new Pool({
connectionString: DATABASE_URL
})
// GET - Retrieve last 10 quick mode entries
export async function GET() {
try {
const result = await pool.query(
`SELECT id, project_name, project_path, entry_text, created_at
FROM quick_mode_entries
ORDER BY created_at DESC
LIMIT 10`
)
return NextResponse.json({ entries: result.rows })
} catch (error) {
console.error('Failed to fetch quick mode entries:', error)
return NextResponse.json({ error: 'Failed to fetch entries' }, { status: 500 })
}
}
// POST - Save a new quick mode entry
export async function POST(request: NextRequest) {
try {
let body: { projectName?: string; projectPath?: string; entryText?: string }
try {
body = await request.json()
} catch {
return NextResponse.json({ error: 'Invalid JSON in request body' }, { status: 400 })
}
const { projectName, projectPath, entryText } = body
if (!projectName || !projectPath || !entryText) {
return NextResponse.json({ error: 'Missing required fields' }, { status: 400 })
}
// Insert new entry
const result = await pool.query(
`INSERT INTO quick_mode_entries (project_name, project_path, entry_text)
VALUES ($1, $2, $3)
RETURNING id, project_name, project_path, entry_text, created_at`,
[projectName, projectPath, entryText]
)
// Clean up old entries - keep only last 10
await pool.query(
`DELETE FROM quick_mode_entries
WHERE id NOT IN (
SELECT id FROM quick_mode_entries
ORDER BY created_at DESC
LIMIT 10
)`
)
return NextResponse.json({ entry: result.rows[0], success: true })
} catch (error) {
console.error('Failed to save quick mode entry:', error)
return NextResponse.json({ error: 'Failed to save entry' }, { status: 500 })
}
}