@@ -463,6 +463,65 @@ module.exports = function (localCouchServer, sourceCouchServer) {
463463 } ) ;
464464 } ;
465465
466+ functions . fetchResourcesPointingToThisCollectionAndItsSubCollections = function ( collectionId , collectionName , callback ) {
467+ var subCollectionsDb = sourceCouchDb . db . use ( 'collectionlist' ) ;
468+ var resourcesDb = sourceCouchDb . db . use ( 'resources' ) ;
469+ var subCollectionsViewkeys = [ collectionId ] ;
470+ var resourcesViewkeys = [ collectionId ] ;
471+ var arrResources = [ ] ;
472+ var arrSubCollection = [ ] ;
473+
474+
475+ // Check if major-collection have any resources
476+ resourcesDb . view ( 'bell' , 'listCollection' , { keys : resourcesViewkeys , include_docs : true } , function ( err , resp ) {
477+ if ( err ) {
478+ console . log ( "dbInteractions.js:: fetchResourcesPointingToThisCollectionAndItsSubCollections:: error fetching docs of db: " + 'resources' ) ; console . log ( err ) ;
479+ callback ( err ) ;
480+ } else {
481+ var resourceIdAndTitle ;
482+ console . log ( "fetched resources count for collection: " + collectionName + " (" + collectionId + "): " + resp . rows . length ) ;
483+ resp . rows . forEach ( function ( resourceDocContainer ) {
484+ resourceIdAndTitle = { id : resourceDocContainer . doc . _id , name : resourceDocContainer . doc . title } ;
485+ console . log ( "resourceId: " + resourceIdAndTitle . id ) ;
486+ arrResources . push ( resourceIdAndTitle ) ;
487+ } ) ;
488+ }
489+ } ) ;
490+
491+ // Include all resources from all sub-collections
492+ subCollectionsDb . view ( 'bell' , 'subCategoriesByMajorCategory' , { keys : subCollectionsViewkeys , include_docs : true } , function ( err , resp ) {
493+ if ( err ) {
494+ console . log ( "dbInteractions.js:: fetchResourcesPointingToThisCollectionAndItsSubCollections:: error fetching docs of db: " + 'collectionlist' ) ; console . log ( err ) ;
495+ callback ( err ) ;
496+ } else {
497+ console . log ( "fetched sub-collections count for collection: " + collectionName + " (" + collectionId + "): " + resp . rows . length ) ;
498+ if ( resp . rows . length == 0 )
499+ callback ( null , arrResources ) ;
500+ resp . rows . forEach ( function ( subCollectionDocContainer ) {
501+ arrSubCollection . push ( subCollectionDocContainer . doc . _id )
502+ resourcesViewkeys = [ subCollectionDocContainer . doc . _id ]
503+ // To-Do: First push all subcollections in arrSubCollection and then iterate on each to get resources from them
504+ resourcesDb . view ( 'bell' , 'listCollection' , { keys : resourcesViewkeys , include_docs : true } , function ( err , resp ) {
505+ if ( err ) {
506+ console . log ( "dbInteractions.js:: fetchResourcesPointingToThisCollectionAndItsSubCollections:: error fetching docs of db: " + 'resources' ) ; console . log ( err ) ;
507+ callback ( err ) ;
508+ } else {
509+ var resourceIdAndTitle ;
510+ console . log ( "fetched resources count for collection: " + subCollectionDocContainer . doc . CollectionName + " (" + subCollectionDocContainer . doc . _id + "): " + resp . rows . length ) ;
511+ resp . rows . forEach ( function ( resourceDocContainer ) {
512+ resourceIdAndTitle = { id : resourceDocContainer . doc . _id , name : resourceDocContainer . doc . title } ;
513+ console . log ( "resourceId: " + resourceIdAndTitle . id ) ;
514+ arrResources . push ( resourceIdAndTitle ) ;
515+ } ) ;
516+ callback ( null , arrResources ) ;
517+ }
518+ } ) ;
519+ } ) ;
520+
521+ }
522+ } ) ;
523+ } ;
524+
466525 // this method has not been used yet. it was just copied from another file to check if things were working or not in the beginning
467526 functions . writeToFile = function ( fileNamePostfix , data , successMsg , callback ) {
468527 var filename = "./" + "design_docs" + "/" + "design_doc_" + fileNamePostfix + ".txt" ;
0 commit comments