def mark_complete(self, item_id: str) -> ToDoItem: query: dict = {"_id": ObjectId(item_id)} new_status: dict = { "$set": { "status": "Done", "last_modified": str(datetime.now()) } } return ToDoItem.from_json( self._collection.find_one_and_update( query, new_status, return_document=ReturnDocument.AFTER))
def test_get_from_json(self): test_object: dict = ToDoItem.new_item_as_dict( "Testing static constructor method") collection = MongoClient().db.collection collection.insert_one(test_object) returned_object = collection.find_one( {'title': 'Testing static constructor method'}) object_to_test: ToDoItem = ToDoItem.from_json(returned_object) assert isinstance(object_to_test.item_id, str) assert "Testing static constructor method" == object_to_test.title assert "To Do" == object_to_test.status assert isinstance(object_to_test.last_modified, datetime)
def delete_item_by_id(self, item_id: str) -> ToDoItem: return ToDoItem.from_json( self._collection.find_one_and_delete({"_id": ObjectId(item_id)}))
def get_item(self, item_id: str) -> ToDoItem: return ToDoItem.from_json( self._collection.find_one({"_id": ObjectId(item_id)}))
def get_items(self) -> List[ToDoItem]: return list( map(lambda doc: ToDoItem.from_json(doc), self._collection.find())) # pylint:disable=unnecessary-lambda