FarmerHelp / backend /app /scripts /seed_users.py
Gankit12's picture
Wert
34af792
Raw
History Blame Contribute Delete
2.76 kB
"""
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()