lib/types.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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import
x_db_sqlite,
asynchttpserver,
pegs,
strtabs
import
config
type
EDatastoreExists* = object of Exception
EDatastoreDoesNotExist* = object of Exception
EDatastoreUnavailable* = object of Exception
EInvalidTag* = object of Exception
EDirectoryNotFound* = object of Exception
EFileNotFound* = object of Exception
EFileExists* = object of Exception
EInvalidRequest* = object of Exception
uarray* {.unchecked.} [T] = array[0..0, T]
Datastore* = object
db*: DbConn
path*: string
mount*: string
QueryOptions* = object
select*: seq[string]
single*:bool
limit*: int
offset*: int
orderby*: string
tags*: string
folder*: string
search*: string
TagExpression* = object
tag*: string
startswith*: bool
endswith*: bool
negated*: bool
Operation* = enum
opRun,
opImport,
opExport,
opDelete,
opVacuum,
opOptimize
LogLevel* = enum
lvDebug
lvInfo
lvWarn
lvError
lvNone
Logger* = object
level*: LogLevel
LiteStore* = object
store*: Datastore
address*: string
port*: int
operation*: Operation
directory*: string
file*: string
mount*: bool
readonly*: bool
appname*: string
appversion*: string
favicon*:string
loglevel*:string
LSRequest* = asynchttpserver.Request
LSResponse* = tuple[
code: HttpCode,
content: string,
headers: HttpHeaders]
ResourceInfo* = tuple[
resource: string,
id: string,
version: string
]
var
PEG_TAG* {.threadvar.}: Peg
PEG_USER_TAG* {.threadvar.}: Peg
PEG_DEFAULT_URL* {.threadvar.}: Peg
PEG_URL* {.threadvar.}: Peg
PEG_TAG = peg"""^\$? [a-zA-Z0-9_\-?~:.@#^!+]+$"""
PEG_USER_TAG = peg"""^[a-zA-Z0-9_\-?~:.@#^!+]+$"""
PEG_DEFAULT_URL = peg"""^\/{(docs / info / dir)} (\/ {(.+)} / \/?)$"""
PEG_URL = peg"""^\/({(v\d+)} \/) {([^\/]+)} (\/ {(.+)} / \/?)$"""
# Initialize LiteStore
var LS* {.threadvar.}: LiteStore
var TAB_HEADERS* {.threadvar.}: array[0..2, (string, string)]
LS.appversion = version
LS.appname = appname
TAB_HEADERS = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Server": LS.appname & "/" & LS.appversion
}
proc newQueryOptions*(): QueryOptions =
return QueryOptions(select: @["documents.id AS id", "documents.data AS data", "content_type", "binary", "searchable", "created", "modified"], single: false, limit: 0, offset: 0, orderby: "", tags: "", search: "", folder: "")
|