Spaces:
Sleeping
Sleeping
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()
|