← back to Norma

app/api/social/posts/pending/route.ts

43 lines

import { NextRequest, NextResponse } from 'next/server';
import { query } from '@/lib/db';

export const dynamic = 'force-dynamic';

/**
 * GET /api/social/posts/pending
 * Returns posts awaiting approval.
 */
export async function GET(_request: NextRequest) {
  try {
    const result = await query(
      `SELECT
         p.id,
         p.body,
         p.platform,
         p.media_urls,
         p.hashtags,
         p.link_url,
         p.submitted_at,
         p.created_by,
         p.needs_approval,
         p.status,
         p.created_at,
         a.account_name,
         a.display_name
       FROM social_posts p
       LEFT JOIN social_accounts a ON a.id = p.account_id
       WHERE p.status = 'pending_approval'
         AND p.needs_approval = true
       ORDER BY p.submitted_at DESC NULLS LAST, p.created_at DESC`,
    );

    return NextResponse.json({ pending: result.rows });
  } catch (err) {
    console.error('[posts/pending] error:', (err as Error).message);
    return NextResponse.json(
      { error: 'Failed to load pending posts' },
      { status: 500 },
    );
  }
}