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 lib/x_sqlite3, lib/x_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) 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 |