File size: 2,758 Bytes
34af792
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
"""
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()