"""اسکریپت seed دیتابیس. اجرا: python -m app.seed # فقط اگر دیتابیس خالی باشد python -m app.seed --force # حذف کامل داده‌ها و ساخت مجدد """ import argparse from . import models, seed_data from .auth import hash_password from .config import settings from .database import Base, SessionLocal, engine def seed(force: bool = False) -> None: db = SessionLocal() try: if force: Base.metadata.drop_all(bind=engine) print("جداول قبلی حذف شدند.") Base.metadata.create_all(bind=engine) if not force and db.query(models.Service).count() > 0: print("دیتابیس قبلاً seed شده است. برای بازنشانی کامل: python -m app.seed --force") return db.add(models.Brand(**seed_data.BRAND)) for item in seed_data.SERVICES: db.add(models.Service(**item)) for item in seed_data.STATS: db.add(models.Stat(**item)) for item in seed_data.PROJECTS: db.add(models.Project(**item)) for item in seed_data.ARTICLES: db.add(models.Article(**item)) for item in seed_data.TESTIMONIALS: db.add(models.Testimonial(**item)) for item in seed_data.FAQS: db.add(models.Faq(**item)) for item in seed_data.TEAM: db.add(models.TeamMember(**item)) for item in seed_data.TIMELINE: db.add(models.TimelineItem(**item)) for item in seed_data.WHY: db.add(models.WhyUsItem(**item)) db.add(models.BeforeAfter(**seed_data.BEFORE_AFTER)) if db.query(models.AdminUser).count() == 0: db.add( models.AdminUser( username=settings.admin_username, password_hash=hash_password(settings.admin_password), ) ) print(f"کاربر ادمین ساخته شد: {settings.admin_username}") db.commit() counts = { "خدمات": db.query(models.Service).count(), "پروژه‌ها": db.query(models.Project).count(), "مقالات": db.query(models.Article).count(), "نظرات": db.query(models.Testimonial).count(), "سوالات متداول": db.query(models.Faq).count(), "تیم": db.query(models.TeamMember).count(), "تایم‌لاین": db.query(models.TimelineItem).count(), "آمار": db.query(models.Stat).count(), "چرا آرامش": db.query(models.WhyUsItem).count(), } for label, count in counts.items(): print(f" {label}: {count} رکورد") print("✔ seed با موفقیت انجام شد.") finally: db.close() if __name__ == "__main__": parser = argparse.ArgumentParser(description="Seed کردن دیتابیس گروه ساختمانی آرامش") parser.add_argument("--force", action="store_true", help="حذف همه جداول و ساخت مجدد") args = parser.parse_args() seed(force=args.force)