Add Lead CRM API with Supabase
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { supabase } from '@/lib/supabase'
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
const { data: leads, error } = await supabase
|
||||
.from('leads')
|
||||
.select('*')
|
||||
.order('created_at', { ascending: false })
|
||||
|
||||
if (error) throw error
|
||||
|
||||
return NextResponse.json({ leads: leads || [] })
|
||||
} catch (error) {
|
||||
console.error('Supabase error:', error)
|
||||
return NextResponse.json({ leads: [], error: 'Failed to fetch' }, { status: 500 })
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json()
|
||||
|
||||
const lead = {
|
||||
name: body.name,
|
||||
business_name: body.businessName || body.business_name,
|
||||
phone: body.phone,
|
||||
email: body.email,
|
||||
source: body.source,
|
||||
status: body.status || 'new',
|
||||
notes: body.notes,
|
||||
}
|
||||
|
||||
const { data, error } = await supabase
|
||||
.from('leads')
|
||||
.insert([lead])
|
||||
.select()
|
||||
|
||||
if (error) {
|
||||
console.error('Supabase insert error:', error)
|
||||
return NextResponse.json({ error: error.message }, { status: 500 })
|
||||
}
|
||||
|
||||
return NextResponse.json({ success: true, lead: data?.[0] })
|
||||
} catch (error) {
|
||||
console.error('Error:', error)
|
||||
return NextResponse.json({ error: 'Failed to save' }, { status: 500 })
|
||||
}
|
||||
}
|
||||
|
||||
export async function PATCH(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json()
|
||||
const { id, ...updates } = body
|
||||
|
||||
const { data, error } = await supabase
|
||||
.from('leads')
|
||||
.update(updates)
|
||||
.eq('id', id)
|
||||
.select()
|
||||
|
||||
if (error) throw error
|
||||
|
||||
return NextResponse.json({ success: true, lead: data?.[0] })
|
||||
} catch (error) {
|
||||
return NextResponse.json({ error: 'Failed to update' }, { status: 500 })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user