62 lines
1.1 KiB
Nim
Raw Normal View History

2022-07-15 15:28:42 -05:00
import ./key
type
2022-09-12 12:30:52 -06:00
Node* = object of RootObj
next*: Node
prev*: Node
Filter* = object of Node
field*: string
value*: string
FilterBool* = object of Filter
a*, b*: Filter
FilterAnd = object of FilterBool
FilterOr = object of FilterBool
Eq = object of Filter
Lt = object of Filter
Gt = object of Filter
Not = object of Filter
SortOrder* {.pure.} = enum
Assending,
Descensing
2022-07-15 15:28:42 -05:00
2022-09-12 12:30:52 -06:00
Order* = object
field*: string
sort*: SortOrder
Query* = object
key*: Key
limit*: int
skip*: int
orders*: seq[Order]
filters*: seq[Filter]
2022-07-15 15:28:42 -05:00
QueryResponse* = tuple[key: Key, data: seq[byte]]
2022-09-12 12:30:52 -06:00
proc `==`*(a, b: Filter): Filter = discard
proc `!=`*(a, b: Filter): Filter = discard
proc `>`*(a, b: Filter): Filter = discard
proc `>=`*(a, b: Filter): Filter = discard
proc `<`*(a, b: Filter): Filter = discard
proc `<=`*(a, b: Filter): Filter = discard
2022-07-15 15:28:42 -05:00
proc init*(
T: type Query,
2022-09-12 12:30:52 -06:00
key: Key,
orders: openArray[Order] = [],
filters: openArray[Filter] = [],
skip = 0,
limit = 0): T =
2022-07-15 15:28:42 -05:00
2022-09-12 12:30:52 -06:00
T(
key: key,
filters: @filters,
orders: @orders,
skip: skip,
limit: limit)