/**
* Check Imported Data Script
* Überprüft ob die Import-Scripts erfolgreich waren
*/
import dotenv from "dotenv";
import { LiteFarmClient } from "./litefarm-client.js";
dotenv.config();
async function main() {
if (!process.env.LITEFARM_EMAIL || !process.env.LITEFARM_PASSWORD) {
console.error("❌ Error: LITEFARM_EMAIL and LITEFARM_PASSWORD must be set");
process.exit(1);
}
const client = new LiteFarmClient(
process.env.LITEFARM_EMAIL,
process.env.LITEFARM_PASSWORD
);
try {
console.log("\n🔍 Checking LiteFarm Data...\n");
// Login
await client.login();
console.log("✅ Logged in\n");
// Get farms
console.log("📍 Farms:");
console.log("=".repeat(60));
const farms = await client.getFarms();
if (farms.length === 0) {
console.log("❌ No farms found!");
return;
}
for (const farm of farms) {
console.log(`\n✅ ${farm.farm_name}`);
console.log(` ID: ${farm.farm_id}`);
console.log(` Address: ${farm.address || 'N/A'}`);
console.log(` Created: ${new Date(farm.created_at).toLocaleDateString()}`);
// Get locations for this farm
try {
const locations = await client.get<any[]>(`/location/farm/${farm.farm_id}`);
console.log(`\n 📌 Locations (${locations.length}):`);
const locationsByType: Record<string, any[]> = {};
locations.forEach(loc => {
const type = loc.type || 'unknown';
if (!locationsByType[type]) locationsByType[type] = [];
locationsByType[type].push(loc);
});
for (const [type, locs] of Object.entries(locationsByType)) {
console.log(`\n ${type.toUpperCase()}(s): ${locs.length}`);
locs.slice(0, 5).forEach(loc => {
const area = loc.figure?.total_area || loc.total_area || 0;
console.log(` - ${loc.name || 'Unnamed'} (${area}m²)`);
});
if (locs.length > 5) {
console.log(` ... and ${locs.length - 5} more`);
}
}
// Get tasks for this farm
const tasks = await client.getTasks({ farm_id: farm.farm_id });
console.log(`\n 📋 Tasks: ${tasks.length}`);
if (tasks.length > 0) {
const tasksByType: Record<string, number> = {};
tasks.forEach((task: any) => {
const type = task.taskType?.task_translation_key || 'unknown';
tasksByType[type] = (tasksByType[type] || 0) + 1;
});
console.log(`\n Task Breakdown:`);
Object.entries(tasksByType)
.sort((a, b) => b[1] - a[1])
.forEach(([type, count]) => {
console.log(` - ${type}: ${count}`);
});
// Check for recent tasks
const recentTasks = tasks
.filter((t: any) => t.complete_date)
.sort((a: any, b: any) => new Date(b.complete_date).getTime() - new Date(a.complete_date).getTime())
.slice(0, 5);
if (recentTasks.length > 0) {
console.log(`\n 📅 Recent Completed Tasks:`);
recentTasks.forEach((task: any) => {
console.log(` - ${task.taskType?.task_translation_key || 'Task'} (${new Date(task.complete_date).toLocaleDateString()})`);
});
}
}
} catch (error) {
console.log(` ⚠️ Could not fetch details: ${error}`);
}
}
console.log("\n" + "=".repeat(60));
console.log("✅ Data check completed!\n");
} catch (error) {
console.error("\n❌ Error:", error);
process.exit(1);
}
}
main();