def get(cls, user_id): return { 'message': 'success', 'content': [score.json() for score in ScoreModel.find_by_user_id(user_id)] }
def delete(cls, user_id): for score in ScoreModel.find_by_user_id(user_id): score.remove_from_db() return { 'message': f'Successfully deleted all scores for user \"{user_id}\".' }
def post(cls, user_id): data = cls.parser.parse_args() names = (score.name for score in ScoreModel.find_by_user_id(user_id)) if data['name'] not in names: new_score = ScoreModel(data['name'], user_id, data['score'], public=data['public'], description=data['description']) new_score.save_to_db() return { 'message': 'Successfully added new score.', 'content': new_score.json() } return { 'message': f'Name \"{data["name"]}\" was already used, try different name.', }, 409
def patch(cls, user_id, score_name): data = cls.parser.parse_args() names = (score.name for score in ScoreModel.find_by_user_id(user_id)) if data['name'] in names: return { 'message': 'This name is already used. Try a different one.' }, 409 score = ScoreModel.find_by_name(user_id, score_name) if score: for key, val in data.items(): if val is not None: setattr(score, key, val) score.last_edit = datetime.datetime.now() score.save_to_db() return { 'message': f'Successfully updated score \"{score_name}\".', 'content': score.json(), } return cls.fail_response(score_name)