@@ -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