product_routing_service.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # app/services/product_routing_service.py
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from sqlalchemy import select, delete
  4. from app.core.biz_exception import NotFoundError
  5. from app.models.product_routing import VasProductRouting
  6. from app.schemas.product_routing import VasProductRoutingCreate
  7. class ProductRoutingService:
  8. @staticmethod
  9. async def create(
  10. db: AsyncSession,
  11. data: VasProductRoutingCreate,
  12. ) -> VasProductRouting:
  13. rec = VasProductRouting(**data.dict())
  14. db.add(rec)
  15. await db.commit()
  16. await db.refresh(rec)
  17. return rec
  18. @staticmethod
  19. async def list_by_product(
  20. db: AsyncSession,
  21. product_id: int,
  22. ):
  23. stmt = select(VasProductRouting).where(
  24. VasProductRouting.product_id == product_id
  25. )
  26. result = await db.execute(stmt)
  27. return result.scalars().all()
  28. @staticmethod
  29. async def delete(
  30. db: AsyncSession,
  31. id: int,
  32. ):
  33. stmt = select(VasProductRouting).where(
  34. VasProductRouting.id == id
  35. )
  36. obj = (await db.execute(stmt)).scalar_one_or_none()
  37. if not obj:
  38. raise NotFoundError("Product routing not exist")
  39. await db.delete(obj)
  40. await db.commit()