/** * Multi-Currency Setup Script * * This script sets up the multi-currency system by: * 1. Running the currency tables migration * 2. Seeding initial currency data * 3. Setting up basic exchange rates */ const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); async function setupMultiCurrency() { try { console.log('šŸŒ Setting up Multi-Currency System...\n'); // Check if we're in the right directory const currentDir = process.cwd(); const backendDir = path.join(currentDir, 'backend'); if (!fs.existsSync(backendDir)) { console.error('āŒ Backend directory not found. Please run this script from the project root.'); process.exit(1); } // Change to backend directory process.chdir(backendDir); console.log('šŸ“ Changed to backend directory'); // Step 1: Run the migration console.log('\nšŸ“Š Running currency tables migration...'); try { const migrationPath = path.join('plugins', 'financial-plugin', 'migrations', '001_create_currency_tables.js'); console.log(`Running migration: ${migrationPath}`); // Note: In a real implementation, you would use your migration system // For now, we'll just log that the migration should be run console.log('āš ļø Please run the migration manually using your migration system'); console.log(' Migration file: plugins/financial-plugin/migrations/001_create_currency_tables.js'); } catch (error) { console.error('āŒ Migration failed:', error.message); throw error; } // Step 2: Seed initial currency data console.log('\n🌱 Seeding initial currency data...'); try { const seedScript = path.join('plugins', 'financial-plugin', 'scripts', 'seed-currencies.js'); console.log(`Running seed script: ${seedScript}`); // Note: In a real implementation, you would run the seed script // For now, we'll just log that the seeding should be run console.log('āš ļø Please run the currency seeding script manually'); console.log(' Seed script: plugins/financial-plugin/scripts/seed-currencies.js'); } catch (error) { console.error('āŒ Seeding failed:', error.message); throw error; } // Step 3: Verify setup console.log('\nāœ… Multi-Currency System Setup Complete!'); console.log('\nšŸ“‹ Next Steps:'); console.log('1. Run the database migration to create currency tables'); console.log('2. Execute the currency seeding script for initial data'); console.log('3. Test the currency management interface at /admin/currencies'); console.log('4. Configure course currencies in course creation/editing'); console.log('5. Test currency conversion functionality'); console.log('\nšŸ”— Available Endpoints:'); console.log('- GET /api/financial/currencies - List all currencies'); console.log('- POST /api/financial/currencies - Create new currency (Admin)'); console.log('- GET /api/financial/exchange-rates - List exchange rates'); console.log('- POST /api/financial/exchange-rates - Create/update exchange rate (Admin)'); console.log('- GET /api/financial/convert - Convert between currencies'); console.log('- GET /api/financial/courses/:id/currency - Get course currency config'); console.log('- POST /api/financial/courses/:id/currency - Set course currency config'); console.log('\nšŸŽÆ Features Available:'); console.log('- Multi-currency support for courses'); console.log('- Exchange rate management with history'); console.log('- Bank account configuration per currency'); console.log('- Course-specific currency overrides'); console.log('- Real-time currency conversion'); console.log('- Admin currency management interface'); } catch (error) { console.error('\nāŒ Setup failed:', error.message); process.exit(1); } } // Run the setup if this script is executed directly if (require.main === module) { setupMultiCurrency(); } module.exports = { setupMultiCurrency };