#!/usr/bin/env python3 """ Simple wrapper script for AMO CRM data import Provides easy-to-use presets for common import scenarios """ import asyncio import sys from pathlib import Path # Add project root to Python path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from scripts.import_amocrm_data import AMOCRMImporter async def run_preset(preset: str): """Run import with predefined presets""" presets = { 'quick': { 'description': 'Quick import - essential data only (users, pipelines, deals)', 'entities': ['users', 'pipelines', 'deals'], 'limit': 100, 'batch_size': 50, 'verbose': True }, 'full': { 'description': 'Full import - all entities with relationships', 'entities': None, # All entities 'limit': 1000, 'batch_size': 100, 'verbose': True }, 'test': { 'description': 'Test import - dry run with sample data', 'entities': None, 'limit': 10, 'batch_size': 5, 'dry_run': True, 'verbose': True }, 'users-only': { 'description': 'Import users only', 'entities': ['users'], 'limit': 500, 'batch_size': 100, 'verbose': True }, 'deals-contacts': { 'description': 'Import deals and related contacts/companies', 'entities': ['users', 'companies', 'contacts', 'deals'], 'limit': 500, 'batch_size': 100, 'verbose': True } } if preset not in presets: print(f"āŒ Unknown preset: {preset}") print(f"Available presets: {', '.join(presets.keys())}") return 1 config = presets[preset] print(f"šŸš€ Running preset '{preset}': {config['description']}") print() # Create importer with preset configuration importer = AMOCRMImporter( limit_per_entity=config.get('limit', 1000), batch_size=config.get('batch_size', 100), dry_run=config.get('dry_run', False), force_overwrite=config.get('force', False), skip_relationships=config.get('skip_relationships', False), verbose=config.get('verbose', False) ) # Run import stats = await importer.import_all_data(config.get('entities')) # Check for errors total_errors = sum(s.errors for s in stats.values()) return 1 if total_errors > 0 else 0 def main(): """Main function""" if len(sys.argv) != 2: print("Usage: python scripts/run_import.py ") print() print("Available presets:") print(" quick - Essential data only (users, pipelines, deals)") print(" full - All entities with relationships") print(" test - Dry run with sample data") print(" users-only - Import users only") print(" deals-contacts - Import deals and related data") print() print("For advanced options, use: python scripts/import_amocrm_data.py --help") return 1 preset = sys.argv[1] try: exit_code = asyncio.run(run_preset(preset)) return exit_code except KeyboardInterrupt: print("\nāŒ Import interrupted by user") return 1 except Exception as e: print(f"āŒ Import failed: {str(e)}") return 1 if __name__ == "__main__": exit_code = main() sys.exit(exit_code)