Skip to content

Commit 7313c84

Browse files
authored
Merge pull request #1052 from PathwayCommons/iss1024_cron-update-tasks
CRON: Document update tasks
2 parents dc0ea27 + 1e52c86 commit 7313c84

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/server/routes/api/document/update.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logger from '../../../logger';
22
import { 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';
44
import Document from '../../../../model/document';
55

66
const 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
*/
7679
const 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} documents`);
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

Comments
 (0)