コード例 #1
0
 def post(self):
     try:
         collection = MONGO.db[self.db_name]
         result = collection.insert_one(self._data)
         if not result.acknowledged:
             e = StatusException('write concern was disabled')
             e.status = http.INTERNAL_SERVER_ERROR
             raise e
         self._id = result.inserted_id
         return self._id
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.INTERNAL_SERVER_ERROR
         raise e
コード例 #2
0
 def delete(self):
     try:
         collection = MONGO.db[self.db_name]
         res = collection.delete_one({"_id": ObjectId(self._id)})
         if res.deleted_count != 1:
             msg = f"The number of deleted docs were {res.deleted_count}"
             e = StatusException(msg)
             e.status = http.INTERNAL_SERVER_ERROR
             raise e
         return self._id
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.INTERNAL_SERVER_ERROR
         raise e
コード例 #3
0
 def get_all(cls, args: dict):
     try:
         collection = MONGO.db[cls.db_name]
         result = list(collection.find(args))
         return result
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.INTERNAL_SERVER_ERROR
         raise e
コード例 #4
0
 def get(cls, _id):
     try:
         ObjectId(_id)
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.BAD_REQUEST
         raise e
     try:
         collection = MONGO.db[cls.db_name]
         doc = collection.find_one({"_id": ObjectId(_id)})
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.INTERNAL_SERVER_ERROR
         raise e
     if doc is not None:
         doc = dict(doc)
         cls.validate_data(doc, False)
     return doc
コード例 #5
0
 def patch(self, data):
     self.validate_update_data(data, True, self._id)
     try:
         collection = MONGO.db[self.db_name]
         collection.update_one({'_id': ObjectId(self._id)}, {"$set": data})
         return self._id
     except Exception as ex:
         e = StatusException(ex)
         e.status = http.INTERNAL_SERVER_ERROR
         raise e
コード例 #6
0
 def validate_key_in_schema(cls, field):
     if field not in cls.schema.keys():
         name = cls.__class__.__name__
         e = StatusException(f"{field} is not a valid attribute of {name}")
         e.status = http.BAD_REQUEST
         raise e
コード例 #7
0
 def validate_schema(cls, data):
     for key in cls.schema:
         if key not in data:
             e = StatusException(f"Argument {key} missing")
             e.status = http.BAD_REQUEST
             raise e
コード例 #8
0
 def validate_data_types(cls, data):
     for key in data:
         if not cls.validate_type(key, data[key]):
             e = StatusException(f"Argument {key} has invalid type")
             e.status = http.BAD_REQUEST
             raise e