From bd0e208256c5820de87d9dbc80ec08fe62cfc791 Mon Sep 17 00:00:00 2001 From: Xie Yanbo Date: Thu, 27 Feb 2020 20:31:06 +0800 Subject: [PATCH] add proc getOrDefault --- src/leveldb.nim | 12 ++++++++++++ tests/test.nim | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/leveldb.nim b/src/leveldb.nim index 92f023a..b7dfb9b 100644 --- a/src/leveldb.nim +++ b/src/leveldb.nim @@ -138,6 +138,18 @@ proc get*(self: LevelDb, key: string): Option[string] = result = some(newString(s, size)) free(s) +proc getOrDefault*(self: LevelDb, key: string, default = ""): string = + runnableExamples: + let db = leveldb.open("/tmp/test") + doAssert db.getOrDefault("what?", "nothing") == "nothing" + db.close() + + let val = self.get(key) + if val.isNone(): + result = default + else: + result = val.get() + proc delete*(self: LevelDb, key: string, sync = true) = var errPtr: cstring = nil let writeOptions = if sync: self.syncWriteOptions else: self.asyncWriteOptions diff --git a/tests/test.nim b/tests/test.nim index dad2a3a..4b5b7ab 100644 --- a/tests/test.nim +++ b/tests/test.nim @@ -65,6 +65,9 @@ suite "leveldb": db.put("hello", "world") check(db.get("hello") == some("world")) + test "get or default": + check(db.getOrDefault("nothing", "yes") == "yes") + test "delete": db.put("hello", "world") db.delete("hello")