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: "") |