Skip to content

Commit 3a08aac

Browse files
committed
Update generate-sessions-speakers-schedule.ts
1 parent d207560 commit 3a08aac

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

functions/src/generate-sessions-speakers-schedule.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,27 @@ async function generateAndSaveData(changedSpeaker?) {
9090
}
9191
}
9292

93-
saveGeneratedData(generatedData.sessions, 'generatedSessions');
94-
saveGeneratedData(generatedData.speakers, 'generatedSpeakers');
95-
saveGeneratedData(generatedData.schedule, 'generatedSchedule');
93+
await saveGeneratedData(generatedData.sessions, 'generatedSessions');
94+
await saveGeneratedData(generatedData.speakers, 'generatedSpeakers');
95+
await saveGeneratedData(generatedData.schedule, 'generatedSchedule');
9696
}
9797

98-
function saveGeneratedData(data: SessionMap | SpeakerMap | ScheduleMap, collectionName: string) {
98+
async function saveGeneratedData(data: SessionMap | SpeakerMap | ScheduleMap, collectionName: string) {
9999
if (isEmpty(data)) {
100100
functions.logger.error(
101101
`Attempting to write empty data to Firestore collection: "${collectionName}".`,
102102
);
103103
return;
104104
}
105105

106-
for (let index = 0; index < Object.keys(data).length; index++) {
107-
const key = Object.keys(data)[index];
108-
getFirestore().collection(collectionName).doc(key).set(data[key]);
106+
const keys = Object.keys(data);
107+
const batchSize = 500;
108+
for (let i = 0; i < keys.length; i += batchSize) {
109+
const batch = getFirestore().batch();
110+
const chunk = keys.slice(i, i + batchSize);
111+
for (const key of chunk) {
112+
batch.set(getFirestore().collection(collectionName).doc(key), data[key]);
113+
}
114+
await batch.commit();
109115
}
110116
}

0 commit comments

Comments
 (0)