// Export orders to CSV and JSON formats
import { Order, OrderDetails } from './types.js';
import { writeFileSync } from 'fs';
import { join } from 'path';
export function exportOrdersToCSV(orders: Order[], filepath?: string): string {
const outputPath = filepath || join(process.cwd(), `superstore_orders_${Date.now()}.csv`);
// CSV Header
const header = 'Order ID,Date,Status,Total,Item Count\n';
// CSV Rows
const rows = orders.map(order => {
const date = new Date(order.date).toISOString().split('T')[0];
const itemCount = order.items?.length || 0;
return `"${order.id}","${date}","${order.status}",${order.total},${itemCount}`;
}).join('\n');
const csvContent = header + rows;
writeFileSync(outputPath, csvContent, 'utf8');
return outputPath;
}
export function exportOrderDetailsToCSV(orderDetails: OrderDetails[], filepath?: string): string {
const outputPath = filepath || join(process.cwd(), `superstore_order_details_${Date.now()}.csv`);
// CSV Header
const header = 'Order ID,Date,Status,Product ID,Product Name,Quantity,Price,Total,Image URL\n';
// CSV Rows (one row per item)
const rows: string[] = [];
for (const order of orderDetails) {
const date = new Date(order.date).toISOString().split('T')[0];
if (order.items && order.items.length > 0) {
for (const item of order.items) {
rows.push(
`"${order.id}","${date}","${order.status}","${item.product_id}","${item.name.replace(/"/g, '""')}",${item.quantity},${item.price},${order.total},"${item.image_url || ''}"`
);
}
} else {
// Order with no items
rows.push(
`"${order.id}","${date}","${order.status}","","No items",0,0,${order.total},""`
);
}
}
const csvContent = header + rows.join('\n');
writeFileSync(outputPath, csvContent, 'utf8');
return outputPath;
}
export function exportOrdersToJSON(orders: Order[] | OrderDetails[], filepath?: string): string {
const outputPath = filepath || join(process.cwd(), `superstore_orders_${Date.now()}.json`);
const jsonContent = JSON.stringify(orders, null, 2);
writeFileSync(outputPath, jsonContent, 'utf8');
return outputPath;
}