← 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 })
  }
}