import asyncio
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from app.models.material import Material
from app.models.material_detail import MaterialDetail
from app.schemas.request.material_detail_req_dto import MaterialDetailCreateDTO
from app.services.material_detail_service import MaterialDetailService

engine = create_async_engine('mysql+aiomysql://root:@localhost:3306/cems_db')
AsyncSessionLocal = sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False)

async def run():
    async with AsyncSessionLocal() as db:
        try:
            dto = MaterialDetailCreateDTO(material_id=1, site_id=1, order_quantity=5, is_active=True, is_inclusive_budget=True, is_paid=False, payment_status="unpaid")
            svc = MaterialDetailService()
            res = await svc.create(db, dto, created_by=1)
            print("Response:", res)
        except Exception as e:
            print(f"Exception: {e}")

asyncio.run(run())
