From 12cdeee7ec2a769b3a30adf7e5b0cbbc8d3a0bbe Mon Sep 17 00:00:00 2001
From: Daniel Gasienica <daniel@signal.org>
Date: Tue, 3 Apr 2018 14:43:17 -0400
Subject: [PATCH] Rename `count` to `numMessagesPerBatch`

---
 js/background.js                     |  3 +-
 js/modules/messages_data_migrator.js | 47 +++++++++++++++++++++-------
 2 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/js/background.js b/js/background.js
index ee77301f4..66ed91f0f 100644
--- a/js/background.js
+++ b/js/background.js
@@ -90,12 +90,13 @@
   storage.fetch();
 
   const idleDetector = new IdleDetector();
-
   idleDetector.on('idle', async () => {
+    const NUM_MESSAGES_PER_BATCH = 1;
     const database = Migrations0DatabaseWithAttachmentData.getDatabase();
     const batch = await MessageDataMigrator.processNextBatchWithoutIndex({
       databaseName: database.name,
       minDatabaseVersion: database.version,
+      numMessagesPerBatch: NUM_MESSAGES_PER_BATCH,
       upgradeMessageSchema,
     });
     console.log('Upgrade message schema:', batch);
diff --git a/js/modules/messages_data_migrator.js b/js/modules/messages_data_migrator.js
index 14639b326..c81d71daa 100644
--- a/js/modules/messages_data_migrator.js
+++ b/js/modules/messages_data_migrator.js
@@ -21,12 +21,11 @@ const { deferredToPromise } = require('./deferred_to_promise');
 
 
 const MESSAGES_STORE_NAME = 'messages';
-const NUM_MESSAGES_PER_BATCH = 1;
 
 exports.processNext = async ({
   BackboneMessage,
   BackboneMessageCollection,
-  count,
+  numMessagesPerBatch,
   upgradeMessageSchema,
 } = {}) => {
   if (!isFunction(BackboneMessage)) {
@@ -38,8 +37,8 @@ exports.processNext = async ({
       ' constructor is required');
   }
 
-  if (!isNumber(count)) {
-    throw new TypeError('"count" is required');
+  if (!isNumber(numMessagesPerBatch)) {
+    throw new TypeError('"numMessagesPerBatch" is required');
   }
 
   if (!isFunction(upgradeMessageSchema)) {
@@ -50,7 +49,10 @@ exports.processNext = async ({
 
   const fetchStartTime = Date.now();
   const messagesRequiringSchemaUpgrade =
-    await _fetchMessagesRequiringSchemaUpgrade({ BackboneMessageCollection, count });
+    await _fetchMessagesRequiringSchemaUpgrade({
+      BackboneMessageCollection,
+      count: numMessagesPerBatch,
+    });
   const fetchDuration = Date.now() - fetchStartTime;
 
   const upgradeStartTime = Date.now();
@@ -65,7 +67,7 @@ exports.processNext = async ({
 
   const totalDuration = Date.now() - startTime;
   const numProcessed = messagesRequiringSchemaUpgrade.length;
-  const done = numProcessed < count;
+  const done = numProcessed < numMessagesPerBatch;
   return {
     done,
     numProcessed,
@@ -79,6 +81,7 @@ exports.processNext = async ({
 exports.dangerouslyProcessAllWithoutIndex = async ({
   databaseName,
   minDatabaseVersion,
+  numMessagesPerBatch,
   upgradeMessageSchema,
 } = {}) => {
   if (!isString(databaseName)) {
@@ -89,6 +92,10 @@ exports.dangerouslyProcessAllWithoutIndex = async ({
     throw new TypeError('"minDatabaseVersion" must be a number');
   }
 
+  if (!isNumber(numMessagesPerBatch)) {
+    throw new TypeError('"numMessagesPerBatch" must be a number');
+  }
+
   if (!isFunction(upgradeMessageSchema)) {
     throw new TypeError('"upgradeMessageSchema" is required');
   }
@@ -116,7 +123,11 @@ exports.dangerouslyProcessAllWithoutIndex = async ({
   // eslint-disable-next-line no-constant-condition
   while (true) {
     // eslint-disable-next-line no-await-in-loop
-    const status = await _processBatch({ connection, upgradeMessageSchema });
+    const status = await _processBatch({
+      connection,
+      numMessagesPerBatch,
+      upgradeMessageSchema,
+    });
     if (status.done) {
       break;
     }
@@ -140,6 +151,7 @@ exports.dangerouslyProcessAllWithoutIndex = async ({
 exports.processNextBatchWithoutIndex = async ({
   databaseName,
   minDatabaseVersion,
+  numMessagesPerBatch,
   upgradeMessageSchema,
 } = {}) => {
   if (!isFunction(upgradeMessageSchema)) {
@@ -147,7 +159,11 @@ exports.processNextBatchWithoutIndex = async ({
   }
 
   const connection = await _getConnection({ databaseName, minDatabaseVersion });
-  const batch = await _processBatch({ connection, upgradeMessageSchema });
+  const batch = await _processBatch({
+    connection,
+    numMessagesPerBatch,
+    upgradeMessageSchema,
+  });
   return batch;
 };
 
@@ -172,7 +188,11 @@ const _getConnection = async ({ databaseName, minDatabaseVersion }) => {
   return connection;
 };
 
-const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
+const _processBatch = async ({
+  connection,
+  numMessagesPerBatch,
+  upgradeMessageSchema,
+} = {}) => {
   if (!isObject(connection)) {
     throw new TypeError('"connection" must be a string');
   }
@@ -181,6 +201,10 @@ const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
     throw new TypeError('"upgradeMessageSchema" is required');
   }
 
+  if (!isNumber(numMessagesPerBatch)) {
+    throw new TypeError('"numMessagesPerBatch" is required');
+  }
+
   const isAttachmentMigrationComplete =
     await settings.isAttachmentMigrationComplete(connection);
   if (isAttachmentMigrationComplete) {
@@ -192,12 +216,11 @@ const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
   const lastProcessedIndex =
     await settings.getAttachmentMigrationLastProcessedIndex(connection);
 
-  const count = NUM_MESSAGES_PER_BATCH;
   const fetchUnprocessedMessagesStartTime = Date.now();
   const unprocessedMessages =
     await _dangerouslyFetchMessagesRequiringSchemaUpgradeWithoutIndex({
       connection,
-      count,
+      count: numMessagesPerBatch,
       lastIndex: lastProcessedIndex,
     });
   const fetchDuration = Date.now() - fetchUnprocessedMessagesStartTime;
@@ -215,7 +238,7 @@ const _processBatch = async ({ connection, upgradeMessageSchema } = {}) => {
   const saveDuration = Date.now() - saveMessagesStartTime;
 
   const numMessagesProcessed = upgradedMessages.length;
-  const done = numMessagesProcessed < count;
+  const done = numMessagesProcessed < numMessagesPerBatch;
   const lastMessage = last(upgradedMessages);
   const newLastProcessedIndex = lastMessage ? lastMessage.id : null;
   if (!done) {