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)
    
    
    Run

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
    
    
    Run

Reply via email to