Use (Transaction|LazyValue).get_json() instead of logjson.logjson_to_json() and ...
authorNick Downing <nick@ndcode.org>
Sun, 23 Jan 2022 01:54:03 +0000 (12:54 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 23 Jan 2022 01:54:03 +0000 (12:54 +1100)
LazyValue.mjs
Transaction.mjs
json_to_logjson.mjs
logjson_to_json.mjs
tests/a.mjs
tests/b.mjs

index 39d4180..08be0c5 100644 (file)
@@ -1,5 +1,6 @@
 import assert from 'assert'
 import Transaction from './Transaction.mjs'
+import logjson from './index.mjs'
 
 class LazyValue {
   constructor(transaction, ptr_len) {
@@ -16,10 +17,20 @@ class LazyValue {
     throw new Error('not implemented')
   }
 
+  async get_json(key, default_value) {
+    return /*await*/ logjson.logjson_to_json(
+      await this.get(key, default_value)
+    )
+  }
+
   set(key, value) {
     throw new Error('not implemented')
   }
 
+  set_json(key, value) {
+    this.set(key, this.transaction.json_to_logjson(value))
+  }
+
   delete(key) {
     throw new Error('not implemented')
   }
index 9edfeae..0752466 100644 (file)
@@ -4,6 +4,7 @@ import Database from './Database.mjs'
 import LazyValue from './LazyValue.mjs'
 import LazyArray from './LazyArray.mjs'
 import LazyObject from './LazyObject.mjs'
+import logjson from './index.mjs'
 
 class Transaction {
   constructor(database, value) {
@@ -35,6 +36,12 @@ class Transaction {
     return this.value
   }
 
+  async get_json(default_value) {
+    return /*await*/ logjson.logjson_to_json(
+      await this.get(default_value)
+    )
+  }
+
   set(value) {
     this.dirty = true
     assert(
@@ -45,6 +52,10 @@ class Transaction {
     this.value = value
   }
 
+  set_json(value) {
+    this.set(this.json_to_logjson(value))
+  }
+
   async commit() {
     //console.log('commit transaction', this.serial)
     assert(this.value !== undefined)
index 3a19bff..976afee 100755 (executable)
@@ -11,12 +11,8 @@ if (process.argv.length < 4) {
 let database = new logjson.Database()
 await database.open(process.argv[3])
 let transaction = await database.Transaction()
-transaction.set(
-  transaction.json_to_logjson(
-    JSON.parse(
-      (await fsPromises.readFile(process.argv[2])).toString('utf-8')
-    )
-  )
+transaction.set_json(
+  JSON.parse((await fsPromises.readFile(process.argv[2])).toString('utf-8'))
 )
 transaction.commit()
 await database.close()
index 25de50f..89c0756 100755 (executable)
@@ -14,11 +14,7 @@ let transaction = await database.Transaction()
 await fsPromises.writeFile(
   process.argv[3],
   Buffer.from(
-    JSON.stringify(
-      await logjson.logjson_to_json(await transaction.get()),
-      null,
-      2
-    ) + '\n',
+    JSON.stringify(await transaction.get_json(), null, 2) + '\n',
     'utf-8'
   )
 )
index e72aadf..624d028 100755 (executable)
@@ -7,10 +7,8 @@ let database = new logjson.Database(5, 1)
 await database.open('a.logjson')
 
 let transaction = await database.Transaction()
-transaction.set(
-  transaction.json_to_logjson(
-    JSON.parse(await fsPromises.readFile('random.json', 'utf-8'))
-  )
+transaction.set_json(
+  JSON.parse(await fsPromises.readFile('random.json', 'utf-8'))
 )
 await transaction.commit()
 
@@ -18,11 +16,7 @@ await transaction.commit()
 await fsPromises.writeFile(
   'a.json',
   Buffer.from(
-    JSON.stringify(
-      await logjson.logjson_to_json(await transaction.get()),
-      null,
-      2
-    ) + '\n',
+    JSON.stringify(await transaction.get_json(), null, 2) + '\n',
     'utf-8'
   )
 )
@@ -38,11 +32,7 @@ await database.kick()
 await fsPromises.writeFile(
   'b.json',
   Buffer.from(
-    JSON.stringify(
-      await logjson.logjson_to_json(await transaction.get()),
-      null,
-      2
-    ) + '\n',
+    JSON.stringify(await transaction.get_json(), null, 2) + '\n',
     'utf-8'
   )
 )
@@ -55,7 +45,7 @@ await fsPromises.writeFile(
   'c.json',
   Buffer.from(
     JSON.stringify(
-      await logjson.logjson_to_json(await transaction.get()),
+      await transaction.get_json(),
       null,
       2
     ) + '\n',
index 2ec757b..4bb70f4 100755 (executable)
@@ -9,11 +9,7 @@ let transaction = await database.Transaction()
 await fsPromises.writeFile(
   'd.json',
   Buffer.from(
-    JSON.stringify(
-      await logjson.logjson_to_json(await transaction.get()),
-      null,
-      2
-    ) + '\n',
+    JSON.stringify(await transaction.get_json(), null, 2) + '\n',
     'utf-8'
   )
 )