def customer_limit()

in services/customer-async/main.py [0:0]


def customer_limit():
    json_data = request.get_json()
    customer_id, limit = None, None
    invalid_fields = []
    for key in json_data.keys():
        if key == 'customer_id':
            customer_id = json_data[key]
        elif key == 'limit':
            limit = json_data[key]
        else:
            invalid_fields.append(key)
    if customer_id is None or limit is None:
        return error500()

    query = ds_client.query(kind='Customer')
    query.add_filter('customer_id', '=', customer_id)
    resp = None
    for result in query.fetch(): # This should return a single entity.
        credit = result['credit']
        if limit < credit:
            return error500()
        resp = {
            'customer_id': customer_id,
            'credit': credit,
            'limit': limit
        }
        result.update(resp)
        ds_client.put(result)
        break

    if resp is None: # Create a new customer entry.
        resp = {
            'customer_id': customer_id,
            'credit': 0,
            'limit': limit
        }
        incomplete_key = ds_client.key('Customer')
        customer_entity = datastore.Entity(key=incomplete_key)
        customer_entity.update(resp)
        ds_client.put(customer_entity)

    return resp, 200