Remove the awkward ptr === -1 logic in commit(), flush() routines, since it is now...
authorNick Downing <nick@ndcode.org>
Thu, 6 Jan 2022 23:27:07 +0000 (10:27 +1100)
committerNick Downing <nick@ndcode.org>
Thu, 6 Jan 2022 23:47:09 +0000 (10:47 +1100)
logjson.mjs

index d78a7f5..1dc5a42 100644 (file)
@@ -223,14 +223,15 @@ class Transaction {
 
     if (this.value instanceof Array) {
       let [ptr, len, value] = this.value
-      if ((value instanceof Lazy && await value.flush()) || ptr === -1) {
-        if (value instanceof Lazy)
-          value = value.pack()
-        let [ptr, len] = await this.database.write(value)
-
-        this.value[0] = ptr
-        this.value[1] = len
-        this.dirty = true
+      if (value !== undefined) {
+        assert(value instanceof Lazy)
+        if (await value.flush()) {
+          let [ptr, len] = await this.database.write(value.pack())
+
+          this.value[0] = ptr
+          this.value[1] = len
+          this.dirty = true
+        }
       }
     }
 
@@ -380,14 +381,15 @@ class LazyArray extends Lazy {
       let item = this.array[i]
       if (item instanceof Array) {
         let [ptr, len, value] = item
-        if ((value instanceof Lazy && await value.flush()) || ptr === -1) {
-          if (value instanceof Lazy)
-            value = value.pack()
-          let [ptr, len] = await this.transaction.database.write(value)
-
-          item[0] = ptr
-          item[1] = len
-          this.ptr_len = null // mark dirty
+        if (value !== undefined) {
+          assert(value instanceof Lazy)
+          if (await value.flush()) {
+            let [ptr, len] = await this.transaction.database.write(value.pack())
+
+            item[0] = ptr
+            item[1] = len
+            this.ptr_len = null // mark dirty
+          }
         }
       }
     }
@@ -469,14 +471,15 @@ class LazyObject extends Lazy {
       let item = this.object[i]
       if (item instanceof Array) {
         let [ptr, len, value] = item
-        if ((value instanceof Lazy && await value.flush()) || ptr === -1) {
-          if (value instanceof Lazy)
-            value = value.pack()
-          let [ptr, len] = await this.transaction.database.write(value)
-
-          item[0] = ptr
-          item[1] = len
-          this.ptr_len = null // mark dirty
+        if (value !== undefined) {
+          assert(value instanceof Lazy)
+          if (await value.flush()) {
+            let [ptr, len] = await this.transaction.database.write(value.pack())
+
+            item[0] = ptr
+            item[1] = len
+            this.ptr_len = null // mark dirty
+          }
         }
       }
     }