litestore.nim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
import
sqlite3,
db_sqlite as db,
strutils,
os,
oids,
times,
json,
pegs,
strtabs,
base64
import
lib/types,
lib/logger,
lib/utils,
lib/core,
lib/cli,
lib/server
from asyncdispatch import runForever
{.compile: "vendor/sqlite/libsqlite3.c".}
{.passC: "-DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_LOCKING_STYLE=1".}
when isMainModule:
# Initialize Datastore
if not LS.file.fileExists:
try:
LOG.debug("Creating datastore: ", LS.file)
LS.file.createDatastore()
except:
eWarn()
fail(200, "Unable to create datastore '$1'" % [LS.file])
# Manage vacuum operation separately
if LS.operation == opVacuum:
vacuum LS.file
# Open Datastore and execute operation
try:
LS.store = LS.file.openDatastore()
if LS.mount:
try:
LS.store.mountDir(LS.directory, LS.reset)
except:
eWarn()
fail(202, "Unable to mount directory '$1'" % [LS.directory])
except:
fail(201, "Unable to open datastore '$1'" % [LS.file])
case LS.operation:
of opRun:
LS.serve
runForever()
of opImport:
LS.store.importDir(LS.directory)
of opExport:
LS.store.exportDir(LS.directory)
of opDelete:
LS.store.deleteDir(LS.directory)
of opOptimize:
LS.store.optimize
else:
discard
|