From 20ace8acaa3f4fe512a8e5fa3eda4435ef37e197 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 21 Aug 2026 18:27:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=95=9B=E5=B7=A5=E5=8D=95=E6=B4=BB?= =?UTF-8?q?=E8=B7=83=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worker-platform/work-order-query-repo.ts | 21 +++++++++++++++ .../worker-platform/work-order-repo.ts | 26 +------------------ 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts b/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts index 82dcaf42..be357eb6 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts @@ -425,6 +425,27 @@ export async function countWorkerActiveOrders(workerId: number | string): Promis return Number(result.rows[0]?.total || 0) } +export async function countWorkerActiveOrdersWithClient( + client: PoolClient, + workerId: number, +): Promise { + const result = await client.query<{ total: number }>( + ` + SELECT ( + SELECT COUNT(*)::int FROM work_orders + WHERE assigned_worker_id = $1 AND status = 'in_progress' + ) + ( + SELECT COUNT(*)::int + FROM work_order_shares wos + INNER JOIN work_orders wo ON wo.id = wos.work_order_id + WHERE wos.worker_id = $1 AND wos.status = 'joined' AND wo.status = 'open' + ) AS total + `, + [workerId], + ) + return Number(result.rows[0]?.total || 0) +} + export async function countTimeoutEventsByWorkerIds( workerIds: number[], ): Promise> { diff --git a/apps/backend/src/repositories/worker-platform/work-order-repo.ts b/apps/backend/src/repositories/worker-platform/work-order-repo.ts index cefd649f..2ffca9a6 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-repo.ts @@ -13,6 +13,7 @@ import { countTimeoutEventsByWorkerIds, countWorkerCancellationsSince, countWorkerActiveOrders, + countWorkerActiveOrdersWithClient, countWorkerTimeoutEvents, getWorkOrderById, getWorkOrderByIdWithClient, @@ -1935,28 +1936,3 @@ export async function getOutstandingDepositAmountWithClient( ) return resolveOutstandingDepositAmount(result.rows[0]) } - -export async function countWorkerActiveOrdersWithClient( - client: PoolClient, - workerId: number, -): Promise { - const result = await client.query<{ total: number }>( - ` - SELECT ( - SELECT COUNT(*)::int - FROM work_orders - WHERE assigned_worker_id = $1 - AND status = 'in_progress' - ) + ( - SELECT COUNT(*)::int - FROM work_order_shares wos - INNER JOIN work_orders wo ON wo.id = wos.work_order_id - WHERE wos.worker_id = $1 - AND wos.status = 'joined' - AND wo.status = 'open' - ) AS total - `, - [workerId], - ) - return Number(result.rows[0]?.total || 0) -}