""" Seed Users Script Creates initial dummy users in the database for testing and demo purposes. """ import sys import os from pathlib import Path # Add parent directory to path for imports sys.path.insert(0, str(Path(__file__).parent.parent.parent)) from sqlalchemy.orm import Session from sqlalchemy.exc import IntegrityError from app.database import SessionLocal, init_db from app.models import User SEED_USERS = [ { "mobile_number": "9876543210", "name": "Josh Patel", "state": "Gujarat", "district": "Rajkot", "taluka": "Gondal", "is_active": 1 } ] def seed_users(db: Session) -> dict: """ Seed initial users into the database. Returns: dict with counts of created and skipped users """ created = 0 skipped = 0 for user_data in SEED_USERS: try: # Check if user already exists existing = db.query(User).filter( User.mobile_number == user_data["mobile_number"] ).first() if existing: print(f" Skipped (exists): {user_data['name']} ({user_data['mobile_number']})") skipped += 1 continue # Create new user user = User(**user_data) db.add(user) db.commit() print(f" Created: {user_data['name']} ({user_data['mobile_number']})") created += 1 except IntegrityError as e: db.rollback() print(f" Error (integrity): {user_data['name']} - {str(e)}") skipped += 1 except Exception as e: db.rollback() print(f" Error: {user_data['name']} - {str(e)}") skipped += 1 return {"created": created, "skipped": skipped} def main(): """Main entry point for seeding users.""" print("=" * 60) print("FarmHelp User Seeding Script") print("=" * 60) # Initialize database tables print("\nInitializing database...") init_db() # Create session and seed users db = SessionLocal() try: print("\nSeeding users...") result = seed_users(db) print("\n" + "-" * 40) print(f"Summary: {result['created']} created, {result['skipped']} skipped") print("-" * 40) # List all users print("\nAll users in database:") users = db.query(User).all() for user in users: print(f" - {user.name} | {user.mobile_number} | {user.state}, {user.district}, {user.taluka}") finally: db.close() print("\nDone!") print("=" * 60) if __name__ == "__main__": main()