Пример #1
0
 def delete(request):
     id = request.get('path_params')['id']
     doc = db.find_one(table_name, id)
     if not doc:
         return {'status': 404}
     db.delete(table_name, id)
     return {'body': remove_none(doc)}
Пример #2
0
 def create(request):
     data = writable_doc(json_schema, request.get('body'))
     if 'created_at' in json_schema[
             'properties'] and 'updated_at' in json_schema['properties']:
         now = datetime.now()
         data = {**data, 'created_at': now, 'updated_at': now}
     try:
         id = db.create(table_name, data)
         created_doc = db.find_one(table_name, id)
         return {'body': remove_none(created_doc)}
     except (UniqueViolation, ForeignKeyViolation) as db_error:
         return exception_response(db_error)
Пример #3
0
 def update(request):
     id = request.get('path_params')['id']
     data = writable_doc(json_schema, request.get('body'))
     try:
         if 'updated_at' in json_schema['properties']:
             data = {**data, 'updated_at': datetime.now()}
         db.update(table_name, id, data)
     except (UniqueViolation, ForeignKeyViolation) as db_error:
         return exception_response(db_error)
     updated_doc = db.find_one(table_name, id)
     if not updated_doc:
         return {'status': 404}
     return {'body': remove_none(updated_doc)}
Пример #4
0
 def list(request):
     limit = int(util.get(request, 'query.limit', 100))
     offset = int(util.get(request, 'query.offset', 0))
     sort = util.get(request, 'query.sort') or '-updated_at'
     if not is_valid_sort(json_schema, sort):
         return invalid_response(
             'Invalid sort parameter, must be on the format column1,column2,column3... For descending sort, use -column1'
         )
     filter = parse_filter(json_schema, request.get('query', {}))
     count = db.count(table_name, filter)
     docs = [
         remove_none(doc)
         for doc in db.find(table_name, limit, offset, sort, filter)
     ]
     body = {
         'count': count,
         'limit': limit,
         'offset': offset,
         'sort': sort,
         'filter': filter,
         'data': docs
     }
     return {'body': body}
Пример #5
0
def with_id_str(doc):
    if not doc or not '_id' in doc:
        return doc
    return remove_none({**doc, 'id': str(doc['_id']), '_id': None})