From 3c6155af2ebea1ebaed1153c5b3bd3bb25e27c49 Mon Sep 17 00:00:00 2001 From: ndrpp Date: Thu, 26 Mar 2026 16:53:14 +0200 Subject: [PATCH 1/2] feat: update get jobs handler to allow query for running jobs only --- src/@types/commands.ts | 1 + src/components/core/handler/getJobs.ts | 4 +++- src/components/database/C2DDatabase.ts | 5 +++-- src/components/database/sqliteCompute.ts | 27 ++++++++++++++++-------- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/@types/commands.ts b/src/@types/commands.ts index 395487b44..ba35502b9 100644 --- a/src/@types/commands.ts +++ b/src/@types/commands.ts @@ -312,4 +312,5 @@ export interface GetJobsCommand extends Command { environments?: string[] fromTimestamp?: string consumerAddrs?: string[] + runningJobs?: boolean } diff --git a/src/components/core/handler/getJobs.ts b/src/components/core/handler/getJobs.ts index a72a25add..21cdf18ed 100644 --- a/src/components/core/handler/getJobs.ts +++ b/src/components/core/handler/getJobs.ts @@ -30,7 +30,9 @@ export class GetJobsHandler extends CommandHandler { const jobs = await c2d.getJobs( task.environments, task.fromTimestamp, - task.consumerAddrs + task.consumerAddrs, + undefined, + task.runningJobs ) const sanitizedJobs = jobs.map((job) => { if (job.algorithm) { diff --git a/src/components/database/C2DDatabase.ts b/src/components/database/C2DDatabase.ts index 87146e576..c3c89381a 100755 --- a/src/components/database/C2DDatabase.ts +++ b/src/components/database/C2DDatabase.ts @@ -84,9 +84,10 @@ export class C2DDatabase extends AbstractDatabase { environments?: string[], fromTimestamp?: string, consumerAddrs?: string[], - status?: C2DStatusNumber + status?: C2DStatusNumber, + runningJobs?: boolean ): Promise { - return await this.provider.getJobs(environments, fromTimestamp, consumerAddrs, status) + return await this.provider.getJobs(environments, fromTimestamp, consumerAddrs, status, runningJobs) } async getJobsByStatus( diff --git a/src/components/database/sqliteCompute.ts b/src/components/database/sqliteCompute.ts index d0596617e..33aaaee3d 100644 --- a/src/components/database/sqliteCompute.ts +++ b/src/components/database/sqliteCompute.ts @@ -445,7 +445,8 @@ export class SQLiteCompute implements ComputeDatabaseProvider { environments?: string[], fromTimestamp?: string, consumerAddrs?: string[], - status?: C2DStatusNumber + status?: C2DStatusNumber, + runningJobs?: boolean ): Promise { let selectSQL = `SELECT * FROM ${this.schema.name}` @@ -458,9 +459,22 @@ export class SQLiteCompute implements ComputeDatabaseProvider { params.push(...environments) } - if (fromTimestamp) { - conditions.push(`dateFinished >= ?`) - params.push(fromTimestamp) + if (runningJobs) { + conditions.push(`status = ?`) + params.push(C2DStatusNumber.RunningAlgorithm.toString()) + if (fromTimestamp) { + conditions.push(`dateCreated >= ?`) + params.push(fromTimestamp) + } + } else { + if (fromTimestamp) { + conditions.push(`dateFinished >= ?`) + params.push(fromTimestamp) + } + if (status) { + conditions.push(`status = ?`) + params.push(status.toString()) + } } if (consumerAddrs && consumerAddrs.length > 0) { @@ -469,11 +483,6 @@ export class SQLiteCompute implements ComputeDatabaseProvider { params.push(...consumerAddrs) } - if (status) { - conditions.push(`status = ?`) - params.push(status.toString()) - } - if (conditions.length > 0) { selectSQL += ` WHERE ${conditions.join(' AND ')}` } From aced0be35401c0a0f08685643ca6f9252e45f84e Mon Sep 17 00:00:00 2001 From: ndrpp Date: Thu, 26 Mar 2026 17:00:18 +0200 Subject: [PATCH 2/2] fix: lint --- src/components/database/C2DDatabase.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/database/C2DDatabase.ts b/src/components/database/C2DDatabase.ts index c3c89381a..2fdaedbdc 100755 --- a/src/components/database/C2DDatabase.ts +++ b/src/components/database/C2DDatabase.ts @@ -87,7 +87,13 @@ export class C2DDatabase extends AbstractDatabase { status?: C2DStatusNumber, runningJobs?: boolean ): Promise { - return await this.provider.getJobs(environments, fromTimestamp, consumerAddrs, status, runningJobs) + return await this.provider.getJobs( + environments, + fromTimestamp, + consumerAddrs, + status, + runningJobs + ) } async getJobsByStatus(