Browse Source

Revert "Recreate ML db"

This partially reverts commit 95a0e80c5b7e639ad6fd67aedc4ad85d24e5cb0f.
Manav Rathi 1 year ago
parent
commit
0f3b28a425
1 changed files with 36 additions and 36 deletions
  1. 36 36
      web/apps/photos/src/utils/storage/mlIDbStorage.ts

+ 36 - 36
web/apps/photos/src/utils/storage/mlIDbStorage.ts

@@ -1,6 +1,7 @@
 import { haveWindow } from "@/next/env";
 import log from "@/next/log";
 import {
+    DEFAULT_ML_SEARCH_CONFIG,
     DEFAULT_ML_SYNC_CONFIG,
     DEFAULT_ML_SYNC_JOB_CONFIG,
     MAX_ML_SYNC_ERROR_COUNT,
@@ -84,16 +85,21 @@ class MLIDbStorage {
             async upgrade(db, oldVersion, newVersion, tx) {
                 let wasMLSearchEnabled = false;
                 try {
-                    const searchConfig: unknown = await tx
+                    const s: unknown = await tx
                         .objectStore("configs")
-                        .get(ML_SEARCH_CONFIG_NAME);
-                    if (
-                        searchConfig &&
-                        typeof searchConfig == "object" &&
-                        "enabled" in searchConfig &&
-                        typeof searchConfig.enabled == "boolean"
-                    ) {
-                        wasMLSearchEnabled = searchConfig.enabled;
+                        .getKey(ML_SEARCH_CONFIG_NAME);
+                    if (typeof s == "string") {
+                        const json = JSON.parse(s);
+                        if (
+                            json &&
+                            typeof json == "object" &&
+                            "enabled" in json
+                        ) {
+                            const enabled = json.enabled;
+                            if (typeof enabled == "boolean") {
+                                wasMLSearchEnabled = enabled;
+                            }
+                        }
                     }
                 } catch (e) {
                     log.error(
@@ -102,22 +108,10 @@ class MLIDbStorage {
                     );
                 }
                 log.info(
-                    `Previous ML database v${oldVersion} had ML search ${wasMLSearchEnabled ? "enabled" : "disabled"}`,
+                    `Old database had wasMLSearchEnabled = ${wasMLSearchEnabled}`,
                 );
 
-                // If the user is migrating from a pre-v4 version, delete
-                // everything and recreate. The only thing that we migrate in
-                // such cases is whether or not the ML search was enabled.
-                if (oldVersion < 4) {
-                    // Delete everything in the IndexedDB
-                    db.deleteObjectStore("files");
-                    db.deleteObjectStore("people");
-                    db.deleteObjectStore("things");
-                    db.deleteObjectStore("versions");
-                    db.deleteObjectStore("library");
-                    db.deleteObjectStore("configs");
-
-                    // Recreate
+                if (oldVersion < 1) {
                     const filesStore = db.createObjectStore("files", {
                         keyPath: "fileId",
                     });
@@ -130,14 +124,16 @@ class MLIDbStorage {
                         keyPath: "id",
                     });
 
-                    // db.createObjectStore("things", {
-                    // keyPath: "id",
-                    // });
+                    db.createObjectStore("things", {
+                        keyPath: "id",
+                    });
 
                     db.createObjectStore("versions");
 
                     db.createObjectStore("library");
-
+                }
+                if (oldVersion < 2) {
+                    // TODO: update configs if version is updated in defaults
                     db.createObjectStore("configs");
 
                     await tx
@@ -146,22 +142,26 @@ class MLIDbStorage {
                             DEFAULT_ML_SYNC_JOB_CONFIG,
                             ML_SYNC_JOB_CONFIG_NAME,
                         );
-
                     await tx
                         .objectStore("configs")
                         .add(DEFAULT_ML_SYNC_CONFIG, ML_SYNC_CONFIG_NAME);
-
+                }
+                if (oldVersion < 3) {
                     await tx
                         .objectStore("configs")
-                        .add(
-                            { enabled: wasMLSearchEnabled },
-                            ML_SEARCH_CONFIG_NAME,
-                        );
+                        .add(DEFAULT_ML_SEARCH_CONFIG, ML_SEARCH_CONFIG_NAME);
+                }
+                if (oldVersion < 4) {
+                    // TODO(MR): This loses the user's settings.
+                    db.deleteObjectStore("configs");
+                    db.createObjectStore("configs");
 
-                    log.info(
-                        `Ml DB upgraded to version: ${newVersion} from version: ${oldVersion}`,
-                    );
+                    db.deleteObjectStore("things");
                 }
+
+                log.info(
+                    `Ml DB upgraded to version: ${newVersion} from version: ${oldVersion}`,
+                );
             },
         });
     }