"""Seed default PDF templates (basic + medical, en + ru).""" import asyncio from pathlib import Path from sqlalchemy import select from app.database import async_session_factory from app.models.pdf_template import PdfTemplate TEMPLATES_DIR = Path(__file__).parent.parent / "app" / "templates" / "pdf" / "seeds" async def seed_templates() -> None: templates = [ ("Basic Report", "en", "Standard report with key information and documents", "basic_en.html", True), ("Basic Report", "ru", "Стандартный отчёт с ключевой информацией и документами", "basic_ru.html", True), ("Medical Report", "en", "Medical-styled report with health profile and disclaimers", "medical_en.html", False), ("Medical Report", "ru", "Медицинский отчёт с профилем здоровья и дисклеймером", "medical_ru.html", False), ] async with async_session_factory() as db: for name, locale, desc, filename, is_default in templates: result = await db.execute( select(PdfTemplate).where(PdfTemplate.name == name, PdfTemplate.locale == locale) ) if result.scalar_one_or_none(): print(f" Exists: {name} ({locale})") continue html_path = TEMPLATES_DIR / filename if not html_path.exists(): print(f" Missing: {html_path}") continue html_content = html_path.read_text(encoding="utf-8") template = PdfTemplate( name=name, locale=locale, description=desc, html_content=html_content, is_default=is_default, ) db.add(template) print(f" Created: {name} ({locale})") await db.commit() print("Template seeding complete.") if __name__ == "__main__": asyncio.run(seed_templates())