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 |
import db_sqlite, pegs, asynchttpserver2, strtabs
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*: TDbConn
path*: string
mount*: string
QueryOptions* = object
select*: seq[string]
single*:bool
limit*: int
offset*: int
orderby*: string
tags*: string
search*: string
TagExpression* = object
tag*: string
startswith*: bool
endswith*: bool
negated*: bool
Operation* = enum opRun, opImport, opExport, opDelete
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
reset*: bool
Response* = tuple[
code: HttpCode,
content: string,
headers: StringTableRef]
ResourceInfo* = tuple[
resource: string,
id: string,
version: string
]
let PEG_TAG* = peg"""
^\$? [a-zA-Z0-9_\-?~:.@#^!+]+$
"""
let PEG_USER_TAG* = peg"""
^[a-zA-Z0-9_\-?~:.@#^!+]+$
"""
let PEG_DEFAULT_URL* = peg"""
^\/{(docs / info)} (\/ {(.+)} / \/?)$
"""
let PEG_URL* = peg"""
^\/({(v\d+)} \/) {([^\/]+)} (\/ {(.+)} / \/?)$
"""
const
CT_JSON* = {"Content-Type": "application/json"}
proc ctHeader*(ct: string): StringTableRef =
return {"Content-Type": ct}.newStringTable
proc ctJsonHeader*(): StringTableRef =
return CT_JSON.newStringTable
proc newQueryOptions*(): QueryOptions =
return QueryOptions(select: @["id", "data", "content_type", "binary", "searchable", "created", "modified"], single: false, limit: 0, offset: 0, orderby: "", tags: "", search: "")
|