reformat all ts code via prettier
This commit is contained in:
@@ -1,81 +1,82 @@
|
||||
// scripts/export-tracking-data.js
|
||||
const Redis = require('ioredis');
|
||||
const fs = require('fs/promises');
|
||||
const path = require('path');
|
||||
const Redis = require("ioredis");
|
||||
const fs = require("fs/promises");
|
||||
const path = require("path");
|
||||
|
||||
// Redis client configuration
|
||||
const redis = new Redis({
|
||||
host: 'localhost',
|
||||
host: "localhost",
|
||||
port: 6379,
|
||||
});
|
||||
|
||||
async function exportTrackingData() {
|
||||
try {
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
||||
const fileName = `tracking-data-${timestamp}.txt`;
|
||||
const filePath = path.join(__dirname, '../logs', fileName);
|
||||
const filePath = path.join(__dirname, "../logs", fileName);
|
||||
|
||||
// Create output content
|
||||
let output = '=== Tracking Data Export ===\n';
|
||||
let output = "=== Tracking Data Export ===\n";
|
||||
output += `Generated at: ${new Date().toISOString()}\n\n`;
|
||||
|
||||
// 1. Get all sources
|
||||
const sources = await redis.smembers('referrers:sources');
|
||||
output += '=== Referral Sources ===\n';
|
||||
output += sources.join(', ') + '\n\n';
|
||||
const sources = await redis.smembers("referrers:sources");
|
||||
output += "=== Referral Sources ===\n";
|
||||
output += sources.join(", ") + "\n\n";
|
||||
|
||||
// 2. Get total counts
|
||||
const totalCounts = await redis.hgetall('referrers:count');
|
||||
output += '=== Total Counts by Source ===\n';
|
||||
const totalCounts = await redis.hgetall("referrers:count");
|
||||
output += "=== Total Counts by Source ===\n";
|
||||
for (const [source, count] of Object.entries(totalCounts)) {
|
||||
output += `${source}: ${count}\n`;
|
||||
}
|
||||
output += '\n';
|
||||
output += "\n";
|
||||
|
||||
// 3. Get daily statistics and sort by date
|
||||
output += '=== Daily Statistics ===\n';
|
||||
const dailyKeys = await redis.keys('referrers:daily:*');
|
||||
output += "=== Daily Statistics ===\n";
|
||||
const dailyKeys = await redis.keys("referrers:daily:*");
|
||||
|
||||
// Convert keys to an array of objects with dates and sort by date
|
||||
const dailyData = await Promise.all(dailyKeys.map(async (key) => {
|
||||
const date = key.split(':')[2];
|
||||
const dailyStats = await redis.hgetall(key);
|
||||
const dailyData = await Promise.all(
|
||||
dailyKeys.map(async (key) => {
|
||||
const date = key.split(":")[2];
|
||||
const dailyStats = await redis.hgetall(key);
|
||||
return { date: new Date(date), data: dailyStats };
|
||||
}));
|
||||
})
|
||||
);
|
||||
|
||||
dailyData.sort((a, b) => b.date.getTime() - a.date.getTime()); // Sort by date in descending order (most recent to oldest)
|
||||
|
||||
for (const item of dailyData) {
|
||||
const dateString = item.date.toISOString().split('T')[0]; // Format date string
|
||||
output += `\nDate: ${dateString}\n`;
|
||||
for (const [source, count] of Object.entries(item.data)) {
|
||||
const dateString = item.date.toISOString().split("T")[0]; // Format date string
|
||||
output += `\nDate: ${dateString}\n`;
|
||||
for (const [source, count] of Object.entries(item.data)) {
|
||||
output += ` ${source}: ${count}\n`;
|
||||
}
|
||||
}
|
||||
|
||||
output += '\n';
|
||||
output += "\n";
|
||||
|
||||
// 5. Add basic statistics
|
||||
output += '\n=== Summary ===\n';
|
||||
output += "\n=== Summary ===\n";
|
||||
output += `Total Sources: ${sources.length}\n`;
|
||||
|
||||
|
||||
// Ensure the log directory exists
|
||||
await fs.mkdir(path.join(__dirname, '../logs'), { recursive: true });
|
||||
|
||||
await fs.mkdir(path.join(__dirname, "../logs"), { recursive: true });
|
||||
|
||||
// Write to file
|
||||
await fs.writeFile(filePath, output, 'utf8');
|
||||
|
||||
await fs.writeFile(filePath, output, "utf8");
|
||||
|
||||
console.log(`Data exported successfully to: ${filePath}`);
|
||||
console.log('\nFile Preview:');
|
||||
console.log('='.repeat(50));
|
||||
console.log(output.slice(0, 500) + '...');
|
||||
console.log('='.repeat(50));
|
||||
console.log("\nFile Preview:");
|
||||
console.log("=".repeat(50));
|
||||
console.log(output.slice(0, 500) + "...");
|
||||
console.log("=".repeat(50));
|
||||
|
||||
// Close Redis connection
|
||||
await redis.quit();
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error exporting data:', error);
|
||||
console.error("Error exporting data:", error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user