Skip to content

Commit f15f86a

Browse files
committed
optimize setting api query param updated_at
set it once instead of every loop
1 parent ba65fc5 commit f15f86a

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

src/sync.ts

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,20 @@ async function syncCursusProjects(fast42Api: Fast42, cursus: string, syncDate: D
102102
let params: { [key: string]: string } = { 'page[size]': '100' };
103103

104104
try {
105+
// Set up filters to be used for all pages
106+
const lastSyncRaw = await DatabaseService.getLastSyncTimestamp("cursus_projects", parseInt(cursus));
107+
const lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
108+
if (lastSync) {
109+
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
110+
} else {
111+
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
112+
}
113+
105114
while (hasMorePages) {
106115
pageIndex++;
107116

108-
// Set pagination and last sync range
117+
// Set pagination
109118
params['page[number]'] = pageIndex.toString();
110-
let lastSyncRaw = await DatabaseService.getLastSyncTimestamp("cursus_projects", parseInt(cursus));
111-
let lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
112-
if (lastSync) {
113-
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
114-
} else {
115-
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
116-
}
117119

118120
log(2, `Fetching page ${pageIndex} of projects...`);
119121

@@ -122,7 +124,7 @@ async function syncCursusProjects(fast42Api: Fast42, cursus: string, syncDate: D
122124
log(2, `No more projects found on page ${pageIndex}. Stopping.`);
123125
hasMorePages = false;
124126
await DatabaseService.saveSyncTimestamp("cursus_projects", parseInt(cursus), syncDate);
125-
continue;
127+
break;
126128
}
127129

128130
log(2, `Processing page ${pageIndex} with ${projectsData.length} projects...`);
@@ -152,19 +154,21 @@ async function syncUsers(fast42Api: Fast42, syncDate: Date): Promise<void> {
152154
try {
153155
const totalCampuses = campusIds.length;
154156
for (let [index, campusId] of campusIds.entries()) {
157+
// Set up filters to be used for all pages
155158
params['filter[primary_campus_id]'] = campusId.toString();
159+
const lastSyncRaw = await DatabaseService.getLastSyncTimestamp("campus_users", campusId);
160+
const lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
161+
if (lastSync) {
162+
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
163+
} else {
164+
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
165+
}
166+
156167
while (hasMorePages) {
157168
pageIndex++;
158169

159-
// Set pagination and last sync range
170+
// Set pagination
160171
params['page[number]'] = pageIndex.toString();
161-
let lastSyncRaw = await DatabaseService.getLastSyncTimestamp("campus_users", campusId);
162-
let lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
163-
if (lastSync) {
164-
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
165-
} else {
166-
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
167-
}
168172

169173
log(2, `Fetching page ${pageIndex} of users for campus ${campusId} (${index + 1}/${totalCampuses})...`);
170174

@@ -216,18 +220,20 @@ async function syncProjectUsers(fast42Api: Fast42, syncDate: Date): Promise<void
216220
try {
217221
const totalProjects = projectIds.length;
218222
for (let [index, projectId] of projectIds.entries()) {
223+
// Set up filters to be used for all pages
224+
const lastSyncRaw = await DatabaseService.getLastSyncTimestamp("projects_projects_users", projectId);
225+
const lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
226+
if (lastSync) {
227+
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
228+
} else {
229+
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
230+
}
231+
219232
while (hasMorePages) {
220233
pageIndex++;
221234

222-
// Set pagination and last sync range
235+
// Set pagination
223236
params['page[number]'] = pageIndex.toString();
224-
let lastSyncRaw = await DatabaseService.getLastSyncTimestamp("projects_projects_users", projectId);
225-
let lastSync: Date | undefined = lastSyncRaw === null ? undefined : lastSyncRaw;
226-
if (lastSync) {
227-
params['range[updated_at]'] = `${lastSync.toISOString()},${syncDate.toISOString()}`;
228-
} else {
229-
params['range[updated_at]'] = `${new Date(0).toISOString()},${syncDate.toISOString()}`;
230-
}
231237

232238
log(2, `Fetching page ${pageIndex} of projectUsers for project ${projectId} (${index + 1}/${totalProjects})...`);
233239

0 commit comments

Comments
 (0)