ff56cea4b8
- Introduced new migration for `facebook_accounts` and `facebook_scrape_logs` tables. - Updated the scraping logic to handle Facebook accounts, including success and failure tracking. - Implemented API endpoints for managing Facebook accounts and their scrape logs. - Enhanced user permissions to restrict access to Facebook account management to admins and super admins. - Added a dialog component for displaying and managing Facebook accounts in the UI. - Updated lead fetching logic to include user role checks for assignment and access.
42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server"
|
|
import { getSessionUser } from "@/lib/auth"
|
|
import { query } from "@/lib/db"
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const user = await getSessionUser()
|
|
if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 })
|
|
if (user.role !== "admin" && user.role !== "super_admin") {
|
|
return NextResponse.json({ error: "Forbidden" }, { status: 403 })
|
|
}
|
|
|
|
const { searchParams } = new URL(request.url)
|
|
const accountId = searchParams.get("accountId")
|
|
const limit = parseInt(searchParams.get("limit") || "50", 10)
|
|
const offset = parseInt(searchParams.get("offset") || "0", 10)
|
|
|
|
let sql = `SELECT sl.id, sl.account_id, fa.label AS account_label,
|
|
sl.started_at, sl.completed_at, sl.success,
|
|
sl.leads_found, sl.error_message, sl.detected_flag,
|
|
sl.created_at
|
|
FROM facebook_scrape_logs sl
|
|
JOIN facebook_accounts fa ON fa.id = sl.account_id`
|
|
const params: any[] = []
|
|
let paramIdx = 1
|
|
|
|
if (accountId) {
|
|
sql += ` WHERE sl.account_id = $${paramIdx++}`
|
|
params.push(accountId)
|
|
}
|
|
|
|
sql += ` ORDER BY sl.created_at DESC LIMIT $${paramIdx++} OFFSET $${paramIdx++}`
|
|
params.push(limit, offset)
|
|
|
|
const result = await query(sql, params)
|
|
return NextResponse.json(result.rows)
|
|
} catch (error) {
|
|
console.error("Facebook scrape logs GET error:", error)
|
|
return NextResponse.json({ error: "Failed to load scrape logs" }, { status: 500 })
|
|
}
|
|
}
|