47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { dataService } from '@/lib/data-service';
|
|
import { generateWhatsAppCatalogCsv } from '@/lib/whatsapp-catalog';
|
|
import { getProductsFromAppwrite } from '@/lib/server-appwrite';
|
|
|
|
export const dynamic = 'force-dynamic';
|
|
export const revalidate = 0;
|
|
|
|
export async function GET() {
|
|
try {
|
|
let products = dataService.getProducts();
|
|
|
|
// Sincronizar siempre con Appwrite para garantizar catálogo en tiempo real
|
|
try {
|
|
const appwriteProducts = await getProductsFromAppwrite();
|
|
if (appwriteProducts && appwriteProducts.length > 0) {
|
|
const existingIds = new Set(products.map((p) => p.id));
|
|
for (const ap of appwriteProducts) {
|
|
if (!existingIds.has(ap.id)) {
|
|
dataService.addProduct(ap);
|
|
}
|
|
}
|
|
products = dataService.getProducts();
|
|
}
|
|
} catch (e: any) {
|
|
console.warn('Error sincronizando productos con Appwrite para CSV Feed:', e.message);
|
|
}
|
|
|
|
const csv = generateWhatsAppCatalogCsv(products);
|
|
|
|
return new Response(csv, {
|
|
status: 200,
|
|
headers: {
|
|
'Content-Type': 'text/csv; charset=utf-8',
|
|
'Content-Disposition': 'inline; filename="dripzone_whatsapp_catalog.csv"',
|
|
'Cache-Control': 'public, max-age=60, s-maxage=60, stale-while-revalidate=120',
|
|
},
|
|
});
|
|
} catch (error: any) {
|
|
console.error('[WhatsApp Catalog Feed CSV] Error:', error);
|
|
return new NextResponse('error,message\n500,"Error generating CSV catalog feed"', {
|
|
status: 500,
|
|
headers: { 'Content-Type': 'text/csv; charset=utf-8' },
|
|
});
|
|
}
|
|
}
|