def record_trip_event(): ''' Returns request json object representing a sucessful insert. Time is represented as seconds since unix epoch. ''' if not request.json: abort(400) else: for i in keys: if i not in request.json: abort(400) try: assert request.json['client_id'] is not None assert request.json['driver_id'] is not None assert request.json['start_time'] > 0 assert request.json['lat'] > 0 assert request.json['lng'] > 0 assert request.json['fare'] > 0 assert request.json['distance'] > 0 assert request.json['rating'] > 0 except AssertionError: abort(400) record = {} record['client_id'] = request.json['client_id'] record['driver_id'] = request.json['driver_id'] record['start_time'] = request.json['start_time'] record['lat'] = request.json['lat'] record['lng'] = request.json['lng'] record['fare'] = request.json['fare'] record['distance'] = request.json['distance'] record['rating'] = request.json['rating'] clienttripdata = {} clienttripdata['client_id'] = record['client_id'] crecord = clienttrip.find({'client_id': record['client_id']}) if crecord.count() == 0: clienttripdata['distance'] = record['distance'] clienttrip.insert(clienttripdata) else: clienttrip.update({'client_id': record['client_id']}, {"$set": {'distance': crecord[0]['distance']+record['distance']}}) ridescoll.insert(record) del record['_id'] return jsonify(record), 201
def get_total_miles_per_client(): '''Time is represented as seconds since unix epoch. ''' result = {} coll = clienttrip.find() if request.json and all (i in request.json for i in ('start_time', 'end_time')): for i in coll: total = 0 records = ridescoll.find({"$and": [{'client_id': i['client_id']}, {'start_time': {"$gt": request.json['start_time']}}, {'start_time': {"$lt": request.json['end_time']}} ]}) for record in records: total += record['distance'] result[i['client_id']] = total elif request.json is None: for i in coll: result[i['client_id']] = i['distance'] else: abort(400) return jsonify(result), 200