docs: def search(self, query: Optional[dict] = None,
                 offset: int = 0,
                 limit: Optional[int] = None,
                 order_by: Optional[tuple] = None,
                 secure: bool = False) -> List[IModel]:
          """Search for models
  
          Filtering is done through ``rulez`` based JSON/dict query, which
          defines boolean statements in JSON/dict structure.
  
          : param query: Rulez based query
          : param offset: Result offset
          : param limit: Maximum number of result
          : param order_by: Tuple of ``(field, order)`` where ``order`` is
                           ``'asc'`` or ``'desc'``
          : param secure: When set to True, this will filter out any object which
                         current logged in user is not allowed to see
  
          : todo: ``order_by`` need to allow multiple field ordering
          """
          raise NotImplementedError