Skip to content

Commit dfa40fb

Browse files
committed
DHFPROD-2461: expose new endpoint for getting latest jobs per flow with rs:latest=true being set
1 parent 86fc03a commit dfa40fb

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

marklogic-data-hub/src/main/resources/hub-internal-config/databases/job-database.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
"range-value-positions": false,
1818
"invalid-values": "reject"
1919
},
20+
{
21+
"scalar-type": "string",
22+
"namespace-uri": "",
23+
"localname": "flow",
24+
"collation": "http://marklogic.com/collation/codepoint",
25+
"range-value-positions": false,
26+
"invalid-values": "reject"
27+
},
2028
{
2129
"scalar-type": "dateTime",
2230
"namespace-uri": "",
@@ -33,6 +41,22 @@
3341
"range-value-positions": false,
3442
"invalid-values": "reject"
3543
},
44+
{
45+
"scalar-type": "dateTime",
46+
"namespace-uri": "",
47+
"localname": "timeStarted",
48+
"collation": "",
49+
"range-value-positions": false,
50+
"invalid-values": "reject"
51+
},
52+
{
53+
"scalar-type": "dateTime",
54+
"namespace-uri": "",
55+
"localname": "timeEnded",
56+
"collation": "",
57+
"range-value-positions": false,
58+
"invalid-values": "reject"
59+
},
3660
{
3761
"scalar-type": "string",
3862
"namespace-uri": "",

marklogic-data-hub/src/main/resources/ml-modules/root/data-hub/5/extensions/jobs.sjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function get(context, params) {
2121
let jobId = params["jobid"];
2222
let status = params["status"];
2323
let flow = params["flow-name"];
24+
let latest = params["latest"];
2425

2526
let resp = null;
2627

@@ -36,6 +37,9 @@ function get(context, params) {
3637
else if (fn.exists(flow)) {
3738
resp = datahub.jobs.getJobDocsByFlow(flow);
3839
}
40+
else if (fn.exists(latest)) {
41+
resp = datahub.jobs.getLastestJobDocPerFlow();
42+
}
3943
else{
4044
fn.error(null,"RESTAPI-SRVEXERR", Sequence.from([400, "Bad Request", "Incorrect options"]));
4145
}

marklogic-data-hub/src/main/resources/ml-modules/root/data-hub/5/impl/jobs.sjs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,21 @@ class Jobs {
132132
return docs;
133133
}
134134

135+
getLastestJobDocPerFlow() {
136+
return this.hubutils.queryLatest(function(){
137+
let flowNames = cts.values(cts.jsonPropertyReference("flow"));
138+
let timeQuery = [];
139+
for(let flowName of flowNames) {
140+
let time = cts.values(cts.jsonPropertyReference("timeStarted"), null, ["descending","limit=1"], cts.jsonPropertyRangeQuery("flow", "=", flowName));
141+
timeQuery.push(cts.rangeQuery(cts.jsonPropertyReference("timeStarted"), "=", time));
142+
}
143+
let results = cts.search(cts.orQuery(timeQuery));
144+
if(results) {
145+
return results.toArray();
146+
}
147+
}, this.config.JOBDATABASE);
148+
}
149+
135150
getJobDocsByFlow(flowName) {
136151
return this.hubutils.queryLatest(function() {
137152
let query = [cts.collectionQuery('Job'), cts.jsonPropertyValueQuery('flow', flowName, "case-insensitive")];

0 commit comments

Comments
 (0)