def cupcakes_rating(rating_id): rating_id = validate_object_id(rating_id) rating = list(db.ratings.find({ '_id': rating_id }).limit(1)) check_not_empty(rating) return json_response({ 'data': rating[0] })
def cupcakes_list(): last_id = parse_query('last-id') query = { '_id': { '$gt': validate_object_id(last_id) } } if last_id else {} cupcakes = db.cupcakes.find(query).sort('_id').limit(5) return json_response({ 'data': cupcakes })
def create_cupcakes_rating(): data = request.json data['cupcakeId'] = validate_object_id(data['cupcakeId']) validate_rating(data['rating']) validate_cupcake_exists(data['cupcakeId']) rating_id = db.ratings.insert(data) headers = { 'Location': str.join('/', [ '/cupcakes/rating', str(rating_id) ]) } return json_response({ 'message': 'The item was created successfully' }, 201, headers)
def cupcakes_avg_rating(cupcake_id): cupcake_id = validate_object_id(cupcake_id) validate_cupcake_exists(cupcake_id) rating = db.ratings.aggregate([ { '$match': { 'cupcakeId': cupcake_id } }, { '$group': { '_id': '$cupcakeId', 'minRating': { '$min': '$rating' }, 'avgRating': { '$avg': '$rating' }, 'maxRating': { '$max': '$rating' } } } ]) return json_response({ 'data': rating })
def songs_avg_rating(song_id): song_id = validate_object_id(song_id) validate_song_exists(song_id) rating = db.ratings.aggregate([{ '$match': { 'songId': song_id } }, { '$group': { '_id': '$songId', 'minRating': { '$min': '$rating' }, 'avgRating': { '$avg': '$rating' }, 'maxRating': { '$max': '$rating' } } }]) return json_response({'data': rating})