Here's the example filter code
include filter_types
proc getAdminUsersWithReportsAccess(context: Context): AccountUsers =
var filter: AccountUserFilter
filter.whereEq.isAdmin = true
filter.whereIn.names = @[ "User 1", "User 2" ]
filter.includes.accountUserRole.whereEq.role = "Admin reports"
filter.orderBy.name = asc
filter.orderBy.created = desc
return filterAccountUser(
context.db,
filter)
# Main
var context: Context
discard getAdminUsersWithReportsAccess(context)
The filter_types.nim file (which would be auto-generated):
import times
const
asc = 1
desc = 2
type
DbContext* = object
dbConn: string # stub
Context* = object
db: DbContext
AccountUserRole* = object
accountUserId*: string
role*: string
AccountUserRoles* = seq[AccountUserRole]
AccountUser* = object
name*: string
isAdmin*: bool
AccountUsers* = seq[AccountUser]
AccountUserIncludeRoleModels* = object
accountUsers*: seq[AccountUser]
AccountUserRoleWhereEq* = object
accountUserId*: string
role*: string
AccountUserRoleWhereIn* = object
accountUserIds*: seq[string]
roles*: seq[string]
AccountUserRoleOrderBy* = object
name*: int
isAdmin*: int
AccountUserRoleFilter* = object
whereEq*: AccountUserRoleWhereEq
whereIn*: AccountUserRoleWhereIn
# includes*: AccountUserRoleIncludeModels
orderBy*: AccountUserRoleOrderBy
AccountUserWhereEq* = object
name*: string
isAdmin*: bool
created*: DateTime
AccountUserWhereIn* = object
names*: seq[string]
isAdmins*: seq[bool]
AccountUserIncludeModels* = object
accountUserRole*: AccountUserRoleFilter
AccountUserOrderBy* = object
name*: int
isAdmin*: int
created*: int
AccountUserFilter* = object
whereEq*: AccountUserWhereEq
whereIn*: AccountUserWhereIn
includes*: AccountUserIncludeModels
orderBy*: AccountUserOrderBy
proc filterAccountUser*(
dbContext: DbContext,
filter: AccountUserFilter): AccountUsers =
echo $filter