Exemplo n.º 1
0
def handle_resource(dbname, resource_name, primary_key):

    resp = Response("Internal server error", status=500, mimetype="text/plain")

    try:

        # The design pattern is that the primary key comes in in the form value1_value2_value3
        key_columns = primary_key.split(key_delimiter)

        # Merge dbname and resource names to form the dbschema.tablename element for the resource.
        # This should probably occur in the data service and not here.
        resource = dbname + "." + resource_name


        if request.method == 'GET':
            # Look for the fields=f1,f2, ... argument in the query parameters.
            field_list = request.args.get('fields', None)
            if field_list is not None:
                field_list = field_list.split(",")

            # Call the data service layer.
            result = ds.get_by_primary_key(resource, key_columns, field_list=field_list)

            if result:
                result = process_result(result, dbname, resource_name, primary_key)
                result = {'data': result}
                result = compute_links(result)
                result_data = json.dumps(result, default=str)
                resp = Response(result_data, status=200, mimetype='application/json')
            else:
                resp = Response("Not found", status=404, mimetype="text/plain")

            if result:
                # We managed to find a row. Return JSON data and 200
                result_data = json.dumps(result, default=str)
                resp = Response(result_data, status=200, mimetype='application/json')
            else:
                resp = Response("NOT FOUND", status=404, mimetype='text/plain')

        elif request.method == 'DELETE':
            result = ds.delete(resource, key_columns)
            if result and result > 0:
                resp = Response("OK", status=200, mimetype='text/plain')
            else:
                resp = Response("NOT FOUND", status=404, mimetype='text/plain')

        elif request.method == 'PUT':
            new_r = request.get_json()
            result = ds.update(resource, key_columns, new_r)
            if result and result == 1:
                resp = Response("OK UPDATED", status=200, mimetype="text/plain")

        else:
            resp = Response("I don't recognize this method", status = 422, mimetype="text/plain")

    except Exception as e:
        # We need a better overall approach to generating correct errors.
        utils.debug_message("Something awful happened, e = ", e)

    return resp
Exemplo n.º 2
0
def delete_people():
    result = ds.delete('lahman2017.people', ['yz3400'])
    print('delete_people returned: ', result)


#create_people()
#test_create()
#delete_people()
Exemplo n.º 3
0
def handle_resource(dbname, resource_name, primary_key):

    resp = Response("Internal server error", status=500, mimetype="text/plain")

    try:

        # The design pattern is that the primary key comes in in the form value1_value2_value3
        key_columns = primary_key.split(key_delimiter)

        # Merge dbname and resource names to form the dbschema.tablename element for the resource.
        # This should probably occur in the data service and not here.
        resource = dbname + "." + resource_name

        if request.method == "GET":
            # Look for the fields=f1,f2, ... argument in the query parameters.
            field_list = request.args.get('fields', None)
            if field_list is not None:
                field_list = field_list.split(",")
            # Call the data service layer.
            result = ds.get_by_primary_key(resource, key_columns, field_list=field_list)
            if result:
                # We managed to find a row. Return JSON data and 200
                result_data = json.dumps(result, default=str)
                resp = Response(result_data, status=200, mimetype='application/json')
            else:
                resp = Response("NOT FOUND", status=404, mimetype='text/plain')

        elif request.method == "DELETE":
            result = ds.delete(resource, key_columns)
            if result and result >= 1:
                resp = Response("OK", status=200, mimetype='text/plain')
            else:
                resp = Response("NOT FOUND", status=404, mimetype='text/plain')

        else:
            resp = Response("I am a teapot thath will not PUT", status=422, mimetype='text/plain')

        # if result:
        #     # We managed to find a row. Return JSON data and 200
        #     result_data = json.dumps(result, default=str)
        #     resp = Response(result_data, status=200, mimetype='application/json')
        # else:
        #     # We did not get an exception and we did not get data, therefore this is 404 not found.
        #     resp = Response("Not found", status=404, mimetype="text/plain")
    except Exception as e:
        # We need a better overall approach to generating correct errors.
        utils.debug_message("Something awlful happened, e = ", e)

    return resp