fix(workbench): serialize events and target work order sync
This commit is contained in:
@@ -10,6 +10,7 @@ from psycopg.types.json import Jsonb
|
||||
from uuid import uuid4
|
||||
|
||||
from app.domain.domain_errors import DomainError
|
||||
from app.infra.db.postgresql.workbench_events import lock_event_transaction
|
||||
|
||||
|
||||
class OperationalTaskRepository:
|
||||
@@ -21,6 +22,7 @@ class OperationalTaskRepository:
|
||||
async def transaction(self):
|
||||
try:
|
||||
async with self.connection.transaction():
|
||||
await lock_event_transaction(self.connection)
|
||||
yield self
|
||||
except UndefinedTable as exc:
|
||||
raise DomainError(
|
||||
@@ -239,6 +241,7 @@ class OperationalTaskRepository:
|
||||
status: str | None,
|
||||
limit: int,
|
||||
offset: int,
|
||||
peripheral_work_order_id: str | None = None,
|
||||
) -> list[dict]:
|
||||
cursor = await self.connection.execute(
|
||||
"""SELECT task.document,
|
||||
@@ -255,6 +258,16 @@ class OperationalTaskRepository:
|
||||
AND (task.document#>>'{source,deleted_at}') IS NULL
|
||||
AND (%s::text IS NULL OR task.task_type=%s::text)
|
||||
AND (%s::text IS NULL OR task.status=%s::text)
|
||||
AND (%s::text IS NULL
|
||||
OR (task.document#>>'{source,kind}'='external_system'
|
||||
AND task.document#>>'{source,external_id}' IN (%s,%s))
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM workbench.operational_task_actions AS action
|
||||
WHERE action.project_id=task.project_id AND action.task_id=task.task_id
|
||||
AND action.document->>'kind'='create_work_order'
|
||||
AND action.document#>>'{receipt,adapter}'='peripheral_sample'
|
||||
AND action.document#>>'{receipt,receipt_id}'=%s
|
||||
))
|
||||
ORDER BY task.updated_at DESC,task.task_id
|
||||
LIMIT %s OFFSET %s""",
|
||||
(
|
||||
@@ -263,6 +276,10 @@ class OperationalTaskRepository:
|
||||
task_type,
|
||||
status,
|
||||
status,
|
||||
peripheral_work_order_id,
|
||||
peripheral_work_order_id,
|
||||
f"peripheral_sample:{peripheral_work_order_id}" if peripheral_work_order_id else None,
|
||||
peripheral_work_order_id,
|
||||
limit,
|
||||
offset,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user