11import  logger  from  '../../../logger' ; 
22import  {  DEMO_SECRET ,  DOCUMENT_CRON_CREATED_AGE_DAYS ,  DOCUMENT_CRON_REFRESH_ENABLED ,  DOCUMENT_CRON_UNEDITED_DAYS  }  from  '../../../../config' ; 
3- import  {  loadTables ,  loadDoc ,  fillDocArticle ,   updateRelatedPapers  }  from   './index' ; 
3+ import  {  loadTables ,  loadDoc ,  fillDocArticle  }  from   './index' ; 
44import  Document  from  '../../../../model/document' ; 
55
66const  DOCUMENT_STATUS_FIELDS  =  Document . statusFields ( ) ; 
@@ -47,6 +47,9 @@ const docsToUpdate = async () => {
4747  // Filter: Exclude by status 'trashed' 
4848  q  =  q . filter (  r . row (  'status'  ) . ne (  DOCUMENT_STATUS_FIELDS . TRASHED  )  ) ; 
4949
50+   // Filter: Only those with a paper id provided 
51+   q  =  q . filter (  r . row (  'provided'  ) . hasFields (  'paperId'  )  ) ; 
52+ 
5053  // Filter: Include when created less than  days ago 
5154  let  startDate  =  DOCUMENT_CRON_CREATED_AGE_DAYS  ? dateFromToday (  - 1  *  DOCUMENT_CRON_CREATED_AGE_DAYS  )  : DEFAULT_DOCUMENT_CREATED_START_DATE ; 
5255  q  =  q . filter (  toTime (  'createdDate'  ) . during (  startDate ,  new  Date ( )  )  ) ; 
@@ -55,7 +58,7 @@ const docsToUpdate = async () => {
5558  if (  ! DOCUMENT_CRON_REFRESH_ENABLED  ) { 
5659    q  =  q . filter ( 
5760      r . not ( 
58-         r . row (  'article'  ) (  'PubmedData'  ) (  'ArticleIdList'  ) . contains (  ArticleId  =>  ArticleId ( 'IdType' ) . eq ( 'pmid ' )  ) 
61+         r . row (  'article'  ) (  'PubmedData'  ) (  'ArticleIdList'  ) . contains (  ArticleId  =>  ArticleId ( 'IdType' ) . eq ( 'pubmed ' )  ) 
5962      ) 
6063    ) ; 
6164  } 
@@ -74,11 +77,21 @@ const docsToUpdate = async () => {
7477 * 
7578 */ 
7679const  updateArticle  =  async  ( )  =>  { 
80+   const  chunkify  =  (  arr ,  chunkSize  =  3  )  =>  { 
81+     const  res  =  [ ] ; 
82+     for  ( let  i  =  0 ;  i  <  arr . length ;  i  +=  chunkSize )  { 
83+         const  chunk  =  arr . slice ( i ,  i  +  chunkSize ) ; 
84+         res . push ( chunk ) ; 
85+     } 
86+     return  res ; 
87+   } ; 
88+ 
7789  try  { 
7890    const  docs  =  await  docsToUpdate ( ) ; 
79-     for (  const  doc  of  docs  ) { 
80-       await  fillDocArticle (  doc  ) ; 
81-       await  updateRelatedPapers (  doc  ) ; 
91+     logger . info (  `Updating data for ${ docs . length }  ) ; 
92+     let  chunks  =  chunkify (  docs  ) ; 
93+     for (  const  chunk  of  chunks  ) { 
94+       await  Promise . all (  chunk . map (  fillDocArticle  )  ) ; 
8295    } 
8396    lastUpdateTime (  Date . now ( )  ) ; 
8497
0 commit comments