// Script to add department field to existing VIPs and drivers const API_BASE = 'http://localhost:3000/api'; async function updateVipsWithDepartments() { console.log('šŸ”„ Updating VIPs with department field...'); try { // Get all VIPs const vipsResponse = await fetch(`${API_BASE}/vips`); const vips = await vipsResponse.json(); console.log(`šŸ“‹ Found ${vips.length} VIPs to update`); // Update each VIP with department field for (const vip of vips) { if (!vip.department) { // Assign departments based on organization or name patterns let department = 'Office of Development'; // Default // Simple logic to assign departments if (vip.organization && ( vip.organization.toLowerCase().includes('admin') || vip.organization.toLowerCase().includes('system') || vip.organization.toLowerCase().includes('tech') )) { department = 'Admin'; } const updateData = { ...vip, department: department }; const updateResponse = await fetch(`${API_BASE}/vips/${vip.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(updateData) }); if (updateResponse.ok) { console.log(`āœ… Updated ${vip.name} → ${department}`); } else { console.log(`āŒ Failed to update ${vip.name}`); } } else { console.log(`ā­ļø ${vip.name} already has department: ${vip.department}`); } } } catch (error) { console.error('āŒ Error updating VIPs:', error); } } async function updateDriversWithDepartments() { console.log('\nšŸ”„ Updating drivers with department field...'); try { // Get all drivers const driversResponse = await fetch(`${API_BASE}/drivers`); const drivers = await driversResponse.json(); console.log(`šŸš— Found ${drivers.length} drivers to update`); // Update each driver with department field for (let i = 0; i < drivers.length; i++) { const driver = drivers[i]; if (!driver.department) { // Alternate between departments for variety const department = i % 2 === 0 ? 'Office of Development' : 'Admin'; const updateData = { ...driver, department: department }; const updateResponse = await fetch(`${API_BASE}/drivers/${driver.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(updateData) }); if (updateResponse.ok) { console.log(`āœ… Updated ${driver.name} → ${department}`); } else { console.log(`āŒ Failed to update ${driver.name}`); } } else { console.log(`ā­ļø ${driver.name} already has department: ${driver.department}`); } } } catch (error) { console.error('āŒ Error updating drivers:', error); } } async function main() { console.log('šŸš€ Starting department field updates...\n'); // Check if API is available try { const healthCheck = await fetch(`${API_BASE}/health`); if (!healthCheck.ok) { console.error('āŒ API is not responding. Make sure the backend is running on port 3000'); return; } } catch (error) { console.error('āŒ Cannot connect to API. Make sure the backend is running on port 3000'); return; } await updateVipsWithDepartments(); await updateDriversWithDepartments(); console.log('\nāœ… Department field updates completed!'); console.log('\nšŸŽÆ Department assignments:'); console.log('šŸ¢ Office of Development - Main VIP coordination department'); console.log('āš™ļø Admin - Administrative and technical support department'); console.log('\nYou can now filter and organize VIPs and drivers by their departments!'); } // Run the script main().catch(console.error);