def post(self, name): # if already exists - error if ItemModel.find_by_name(name): return { 'message': f'An item with naem {name} already exists' }, 400 # 400 - bad request # improvement 1 - get json payload/body - no need since we now have reqparse # data = request.get_json() # this will throw error if body isn't json or content type is not json # data = request.get_json(force=True) # doesn't care about content/type header - nice but dangerous # data = request.get_json(silent=True) # doesn't throw error - just returns None data = Item.parser.parse_args() item = ItemModel(name, data['price'], data['store_id']) # calling class method to inset item into db try: item.save_to_db() except Exception as e: return { 'message': "an error occurred on db insertion" }, 500 # 500 - internal server error # we want to let client know that post was succesful return item.json(), 201
def get(self, name): item = ItemModel.find_by_name( name ) # can call a classmethod with self. i think only in class definition if item: return item.json() return {'message': 'item not found ey!'}, 404
def put(self, name): data = self.parser.parse_args() item = ItemModel.find_by_name(name) if item is None: item = ItemModel(name, **data) else: item.price = data['price'] item.save_to_db() return {"message": "Item updated successfully"}
def delete(self, name): claims = get_jwt_claims() if not claims['is_admin']: return {'message': 'Admin privilege required'} item = ItemModel.find_by_name(name) if item: item.delete_from_db() return {"message": "Item Deleted!"}
def put(self, name): data = Item.parser.parse_args() item = ItemModel.find_by_name(name) if item is None: item = ItemModel(name, data['price'], data['store_id']) else: item.price = data['price'] item.save_to_db() return item.json()
def post(self, name): if ItemModel.find_by_name(name): return {"message": "Item already exists"}, 400 data = Item.parser.parse_args() item = ItemModel(name, **data) try: ItemModel.save_to_db(item) except: return {"message": "An error occurred"}, 500 return {"message": "Item Created successfully"}
def delete(self, name): item = ItemModel.find_by_name(name) if item: item.delete_from_db() return {'message': ' item deleted baby ! '}
def get(self, name): row = ItemModel.find_by_name(name) if row: return row.json() return {"message": "Item not found"}