From 3f333219a0b3b5b578a9c91ab59fb5f3d6e4c4b4 Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <janne@kuschku.de>
Date: Wed, 4 May 2022 23:40:00 +0200
Subject: [PATCH] feat: allow choosing sync algorithm via config

---
 app-sync.js    | 17 +++++++++++++----
 load-config.js |  3 ++-
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/app-sync.js b/app-sync.js
index d3af3ef..3975b45 100644
--- a/app-sync.js
+++ b/app-sync.js
@@ -9,15 +9,24 @@ let errorMiddleware = require('./util/error-middleware');
 let config = require('./load-config');
 let { getAccountDb } = require('./account-db');
 
-let simpleSync = require('./sync-simple');
-let fullSync = require('./sync-full');
-
 let actual = require('@actual-app/api');
 let SyncPb = actual.internal.SyncProtoBuf;
 
 const app = express();
 app.use(errorMiddleware);
 
+function getSyncAlgorithm() {
+  switch (config.sync) {
+    case 'simple': return require('./sync-simple')
+    case 'full': return require('./sync-full')
+    default:
+      console.error("Unknown sync algorithm: " + config.sync)
+      process.abort()
+  }
+}
+
+const syncAlgorithm = getSyncAlgorithm()
+
 async function init() {
   let fileDir = join(process.env.ACTUAL_USER_FILES || config.userFiles);
 
@@ -132,7 +141,7 @@ app.post('/sync', async (req, res) => {
   // let simpleSync = require('./sync-simple');
   // let {trie, newMessages } = simpleSync.sync(messages, since, file_id);
 
-  let { trie, newMessages } = await fullSync.sync(messages, since, file_id);
+  let { trie, newMessages } = await getSyncAlgorithm.sync(messages, since, file_id);
 
   // encode it back...
   let responsePb = new SyncPb.SyncResponse();
diff --git a/load-config.js b/load-config.js
index 933ce99..2d71c79 100644
--- a/load-config.js
+++ b/load-config.js
@@ -11,7 +11,8 @@ try {
     port: 5006,
     hostname: '0.0.0.0',
     serverFiles: join(root, 'server-files'),
-    userFiles: join(root, 'user-files')
+    userFiles: join(root, 'user-files'),
+    sync: 'full'
   };
 }
 
-- 
GitLab