Skip to content

Commit 404ab20

Browse files
committed
fixes
1 parent 9c672e7 commit 404ab20

File tree

1 file changed

+43
-31
lines changed

1 file changed

+43
-31
lines changed

js/botasaurus-server-js/src/routes-db-logic.ts

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,12 @@ async function queryTasks(
102102
withResults: boolean,
103103
page?: any,
104104
per_page?: any,
105-
serializer: (task: any, withResults: boolean) => Promise<any> = serializeTask
105+
serializer: (task: any, withResults: boolean) => Promise<any> = serializeTask,
106+
parent_task_id?: number | null
106107
): Promise<any> {
107108
const projectionFields = createProjection(ets);
108-
const total_count = await wrapDbOperationInPromise((cb:any) => db.count({}, cb));
109+
const queryFilter = isNotNullish(parent_task_id) ? { parent_task_id } : {};
110+
const total_count = await wrapDbOperationInPromise((cb:any) => db.count(queryFilter, cb));
109111

110112
if (isNullish(per_page)) {
111113
per_page = total_count === 0 ? 1 : total_count;
@@ -119,7 +121,7 @@ async function queryTasks(
119121
page = isNullish(page) ? 1 : Math.max(Math.min(page, total_pages), 1);
120122

121123
const tasks = await wrapDbOperationInPromise((cb:any) => {
122-
let query = db.find({}).projection(projectionFields).sort({ sort_id: -1 });
124+
let query = db.find(queryFilter).projection(projectionFields).sort({ sort_id: -1 });
123125

124126
if (isNotNullish(per_page)) {
125127
const start = (page - 1) * per_page;
@@ -636,37 +638,47 @@ async function save(x: [number, string]) {
636638
}
637639
return null;
638640
}
639-
async function executeGetTasks(queryParams: Record<string, any>): Promise<any> {
640-
const withResults = (queryParams.with_results || 'true').toLowerCase() === 'true';
641-
642-
let page = queryParams.page;
643-
let per_page = queryParams.per_page;
644-
645-
if (isNotNullish(per_page)) {
646-
per_page = tryIntConversion(per_page, `Invalid 'per_page' parameter value: "${page}". It must be a positive integer.`);
647-
if (!isValidPositiveInteger(per_page)) {
648-
throw new JsonHTTPResponseWithMessage(
649-
`Invalid 'per_page' parameter value: "${page}". It must be a positive integer.`
650-
);
651-
}
652-
} else {
653-
page = 1;
654-
per_page = null;
641+
async function executeGetTasks(queryParams: Record<string, any>): Promise<any> {
642+
const withResults = (queryParams.with_results || 'true').toLowerCase() === 'true';
643+
644+
let page = queryParams.page;
645+
let per_page = queryParams.per_page;
646+
let parent_task_id = queryParams.parent_task_id;
647+
648+
if (isNotNullish(per_page)) {
649+
per_page = tryIntConversion(per_page, `Invalid 'per_page' parameter value: "${page}". It must be a positive integer.`);
650+
if (!isValidPositiveInteger(per_page)) {
651+
throw new JsonHTTPResponseWithMessage(
652+
`Invalid 'per_page' parameter value: "${page}". It must be a positive integer.`
653+
);
655654
}
656-
657-
if (isNotNullish(page)) {
658-
page = tryIntConversion(page, `Invalid 'page' parameter value: "${page}". It must be a positive integer.`);
659-
if (!isValidPositiveInteger(page)) {
660-
throw new JsonHTTPResponseWithMessage(
661-
`Invalid 'page' parameter value: "${page}". It must be a positive integer.`
662-
);
663-
}
664-
} else {
665-
page = 1;
655+
} else {
656+
page = 1;
657+
per_page = null;
658+
}
659+
660+
if (isNotNullish(page)) {
661+
page = tryIntConversion(page, `Invalid 'page' parameter value: "${page}". It must be a positive integer.`);
662+
if (!isValidPositiveInteger(page)) {
663+
throw new JsonHTTPResponseWithMessage(
664+
`Invalid 'page' parameter value: "${page}". It must be a positive integer.`
665+
);
666666
}
667-
668-
return queryTasks(getEts(withResults), withResults, page, per_page);
667+
} else {
668+
page = 1;
669669
}
670+
671+
if (isNotNullish(parent_task_id)) {
672+
parent_task_id = tryIntConversion(parent_task_id, `Invalid 'parent_task_id' parameter value: "${parent_task_id}". It must be a positive integer.`);
673+
if (!isValidPositiveInteger(parent_task_id)) {
674+
throw new JsonHTTPResponseWithMessage(
675+
`Invalid 'parent_task_id' parameter value: "${parent_task_id}". It must be a positive integer.`
676+
);
677+
}
678+
}
679+
680+
return queryTasks(getEts(withResults), withResults, page, per_page, serializeTask, parent_task_id);
681+
}
670682

671683
function isValidAllTasks(tasks: any[]): boolean {
672684
if (!Array.isArray(tasks)) {

0 commit comments

Comments
 (0)