def get_employees(request: Request): # TODO add a wrapper params handler that allows you to specify the type # and handles validation errors automatically. page_size = request.params.get('page[size]') if page_size is None: page_size = 10 else: page_size = int(page_size) # error thrown here page_after = request.params.get('page[after]') query = select([db.employee ]).limit(page_size + 1).order_by(db.employee.c.id.asc()) if page_after is not None: query = query.where(db.employee.c.id > id_from_cursor(page_after)) employees = list(db.execute(Employee, query)) next_id = None if len(employees) > page_size: next_id = employees[-1].id employees = employees[:-1] return Envelope( employees, Pagination(next=None if next_id is None else cursor_from_id(next_id)))
def wrapped(request): raw_response = func(request) if type(raw_response) is Response: return raw_response if type(raw_response) is not Envelope: raw_response = Envelope(raw_response) return cattr.unstructure(raw_response)
async def api_create_envelope(request, *, remarks, postcards): check_admin(request) if not remarks or not remarks.strip(): raise APIValueError('remarks', 'remarks cannot be empty.') if not postcards or not postcards.strip(): raise APIValueError('postcards', 'postcards cannot be empty.') envelope = Envelope(user_id=request.__user__.id, user_name=request.__user__.name, user_image=request.__user__.image, remarks=remarks.strip(), postcards=postcards.strip()) await envelope.save() return envelope