import { db } from "../server/db"; import { sessions, users, mediaOutlets, articles, predictionMarkets, auctions, bids, mediaOutletRequests, comments, predictionBets, } from "../shared/schema"; import { writeFileSync } from "fs"; import { join } from "path"; interface ExportData { exportDate: string; version: "1.0.0"; tables: { sessions: any[]; users: any[]; mediaOutlets: any[]; articles: any[]; predictionMarkets: any[]; auctions: any[]; bids: any[]; mediaOutletRequests: any[]; comments: any[]; predictionBets: any[]; }; metadata: { totalRecords: number; tableStats: Record; }; } async function exportData() { console.log("šŸš€ Starting data export...\n"); try { // Export data from all tables in dependency order console.log("šŸ“Š Exporting sessions..."); const sessionsData = await db.select().from(sessions); console.log(` āœ… Exported ${sessionsData.length} sessions`); console.log("šŸ“Š Exporting users..."); const usersData = await db.select().from(users); console.log(` āœ… Exported ${usersData.length} users`); console.log("šŸ“Š Exporting media outlets..."); const mediaOutletsData = await db.select().from(mediaOutlets); console.log(` āœ… Exported ${mediaOutletsData.length} media outlets`); console.log("šŸ“Š Exporting articles..."); const articlesData = await db.select().from(articles); console.log(` āœ… Exported ${articlesData.length} articles`); console.log("šŸ“Š Exporting prediction markets..."); const predictionMarketsData = await db.select().from(predictionMarkets); console.log(` āœ… Exported ${predictionMarketsData.length} prediction markets`); console.log("šŸ“Š Exporting auctions..."); const auctionsData = await db.select().from(auctions); console.log(` āœ… Exported ${auctionsData.length} auctions`); console.log("šŸ“Š Exporting bids..."); const bidsData = await db.select().from(bids); console.log(` āœ… Exported ${bidsData.length} bids`); console.log("šŸ“Š Exporting media outlet requests..."); const mediaOutletRequestsData = await db.select().from(mediaOutletRequests); console.log(` āœ… Exported ${mediaOutletRequestsData.length} media outlet requests`); console.log("šŸ“Š Exporting comments..."); const commentsData = await db.select().from(comments); console.log(` āœ… Exported ${commentsData.length} comments`); console.log("šŸ“Š Exporting prediction bets..."); const predictionBetsData = await db.select().from(predictionBets); console.log(` āœ… Exported ${predictionBetsData.length} prediction bets`); // Prepare export data const totalRecords = sessionsData.length + usersData.length + mediaOutletsData.length + articlesData.length + predictionMarketsData.length + auctionsData.length + bidsData.length + mediaOutletRequestsData.length + commentsData.length + predictionBetsData.length; const exportData: ExportData = { exportDate: new Date().toISOString(), version: "1.0.0", tables: { sessions: sessionsData, users: usersData, mediaOutlets: mediaOutletsData, articles: articlesData, predictionMarkets: predictionMarketsData, auctions: auctionsData, bids: bidsData, mediaOutletRequests: mediaOutletRequestsData, comments: commentsData, predictionBets: predictionBetsData, }, metadata: { totalRecords, tableStats: { sessions: sessionsData.length, users: usersData.length, mediaOutlets: mediaOutletsData.length, articles: articlesData.length, predictionMarkets: predictionMarketsData.length, auctions: auctionsData.length, bids: bidsData.length, mediaOutletRequests: mediaOutletRequestsData.length, comments: commentsData.length, predictionBets: predictionBetsData.length, }, }, }; // Generate filename with timestamp const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('T')[0]; const filename = `data-export-${timestamp}.json`; const filepath = join(process.cwd(), filename); // Write to file console.log(`\nšŸ’¾ Writing data to ${filename}...`); writeFileSync(filepath, JSON.stringify(exportData, null, 2), 'utf-8'); console.log(`\nāœ… Export completed successfully!`); console.log(`\nšŸ“ File saved to: ${filepath}`); console.log(`šŸ“Š Total records exported: ${totalRecords}`); console.log(`\nšŸ“ˆ Table breakdown:`); Object.entries(exportData.metadata.tableStats).forEach(([table, count]) => { console.log(` - ${table}: ${count} records`); }); process.exit(0); } catch (error) { console.error("\nāŒ Error during export:", error); process.exit(1); } } // Run export exportData();