import asyncio import os import uuid import random from sqlmodel import Session, select, delete from datetime import datetime from database import engine import models def seed_tests(): admin_id_str = "b0e17378-864d-439e-8806-708dc48a891b" with Session(engine) as session: admin = session.exec(select(models.User).limit(1)).first() admin_id = admin.id if admin else uuid.UUID(admin_id_str) # Clear existing DPS tests statement = select(models.Test).where(models.Test.type == "DPS") old_tests = session.exec(statement).all() for t in old_tests: session.delete(t) session.commit() subjects = [ ("Physics", "Laws of Motion", "dps-phy-ch4-20260707.pdf"), ("Chemistry", "Chemical Thermodynamics", "dps-che-ch4-20260707.pdf"), ("Mathematics", "Calculus", "dps-mth-ch4-20260707.pdf"), ("Biology", "Genetics", "dps-bio-ch4-20260707.pdf") ] for exam in [models.ExamEnum.JEE_MAIN, models.ExamEnum.JEE_ADVANCED, models.ExamEnum.NEET]: for subject, topic, pdf in subjects: # Math for NEET? Biology for JEE? Let's just create them anyway so the UI is populated question_ids = [] for i in range(1, 16): new_q = models.Question( subject=subject, topic=topic, subtopic="General", difficulty="Medium", type=models.QuestionTypeEnum.MCQ_SINGLE, question_text=f"Sample mock question {i} for {subject} - {topic}", options={ "A": "Option A", "B": "Option B", "C": "Option C", "D": "Option D" }, correct_answer={"value": "A"}, solution_text="Solution provided here.", language=models.MediumEnum.ENGLISH, exam=exam, created_by=admin_id ) session.add(new_q) session.flush() question_ids.append(str(new_q.id)) test_obj = models.Test( title=f"{subject} Chapter 4 DPS ({exam})", type="DPS", exam_pattern=exam, sections={ "Section 1": { "questions": question_ids, "time_limit": 30 } }, total_time=30, difficulty="Medium", scheduled_date=datetime.utcnow(), is_active=True, created_by=admin_id ) session.add(test_obj) print(f"Created Test: {test_obj.title}") session.commit() print("Database seeded with mock CBT DPPs for all exams.") if __name__ == "__main__": seed_tests()