mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-02 21:53:05 +00:00
62 lines
1.1 KiB
Nim
62 lines
1.1 KiB
Nim
import ./key
|
|
|
|
type
|
|
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
|
|
|
|
Order* = object
|
|
field*: string
|
|
sort*: SortOrder
|
|
|
|
Query* = object
|
|
key*: Key
|
|
limit*: int
|
|
skip*: int
|
|
orders*: seq[Order]
|
|
filters*: seq[Filter]
|
|
|
|
QueryResponse* = tuple[key: Key, data: seq[byte]]
|
|
|
|
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
|
|
|
|
proc init*(
|
|
T: type Query,
|
|
key: Key,
|
|
orders: openArray[Order] = [],
|
|
filters: openArray[Filter] = [],
|
|
skip = 0,
|
|
limit = 0): T =
|
|
|
|
T(
|
|
key: key,
|
|
filters: @filters,
|
|
orders: @orders,
|
|
skip: skip,
|
|
limit: limit)
|