mirror of
https://github.com/status-im/nim-dagger.git
synced 2025-02-02 01:45:49 +00:00
e5df8c50d3
* style: nph setup * chore: formates codex/ and tests/ folder with nph 0.6.1
30 lines
766 B
Nim
30 lines
766 B
Nim
import os
|
|
import std/monotimes
|
|
import pkg/datastore
|
|
import pkg/chronos
|
|
import pkg/questionable/results
|
|
|
|
type TempLevelDb* = ref object
|
|
currentPath: string
|
|
ds: LevelDbDatastore
|
|
|
|
var number = 0
|
|
|
|
proc newDb*(self: TempLevelDb): Datastore =
|
|
if self.currentPath.len > 0:
|
|
raiseAssert("TempLevelDb already active.")
|
|
self.currentPath = getTempDir() / "templeveldb" / $number / $getMonoTime()
|
|
inc number
|
|
createDir(self.currentPath)
|
|
self.ds = LevelDbDatastore.new(self.currentPath).tryGet()
|
|
return self.ds
|
|
|
|
proc destroyDb*(self: TempLevelDb): Future[void] {.async.} =
|
|
if self.currentPath.len == 0:
|
|
raiseAssert("TempLevelDb not active.")
|
|
try:
|
|
(await self.ds.close()).tryGet()
|
|
finally:
|
|
removeDir(self.currentPath)
|
|
self.currentPath = ""
|