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..2fdaedbdc 100755 --- a/src/components/database/C2DDatabase.ts +++ b/src/components/database/C2DDatabase.ts @@ -84,9 +84,16 @@ 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 ')}` }