"""客户工单查询仓储。""" from __future__ import annotations from sqlalchemy import select from model.biz_work_order import BizWorkOrder from repositories.base import BaseRepository class WorkOrderRepo(BaseRepository): """按客户隔离查询工单状态。""" model = BizWorkOrder COMPLETED_STATUSES = ("已完成", "已驳回") async def list_by_customer( self, customer_id: int, *, active_only: bool = True, limit: int = 100 ) -> list[BizWorkOrder]: """按更新时间倒序返回指定客户的工单。""" conditions = [BizWorkOrder.customer_id == customer_id] if active_only: conditions.append(BizWorkOrder.status.not_in(self.COMPLETED_STATUSES)) statement = ( select(BizWorkOrder) .where(*conditions) .order_by(BizWorkOrder.update_time.desc(), BizWorkOrder.id.desc()) .limit(limit) ) return list((await self.db.scalars(statement)).all()) __all__ = ["WorkOrderRepo"]