Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: endpoint to rename an attribute name in a table #178

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
52 changes: 52 additions & 0 deletions local/rest_api_gcbm/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,58 @@ def send_table():
return resp, 200


def rename(connection, table_name, old_new_names):
for old_name, new_name in old_new_names.items():
try:
rename = (
"ALTER TABLE "
+ table_name
+ " RENAME COLUMN "
+ old_name
+ " TO "
+ new_name
)
connection.execute(rename)
except Exception as exception:
return {"status" : 0, "message" : str(exception)}
return {"status" : 1, "message" : "success"}

@app.route("/gcbm/attribute/rename", methods=['POST'])
def rename_attributes():
"""
Rename an attribute in a table
---
tags:
- gcbm
responses:
200:
parameters:
- in: Params
values : JSON
JSON format:
title : name-of-simulation
tables : JSON
table_1 : JSON
old_name_1 : new_name_1
old_name_2 : new_name_2
description: If all the requests are successful, return status 1, else return status as 0 and the error
"""
payload = request.get_json()
title = payload["title"]
input_dir = f"{os.getcwd()}/input/{title}/db/"
connection = sqlite3.connect(f"{input_dir}/gcbm_input.db")

# For each table_name in the payload, rename the attributes
for table_name in payload['tables']:
old_new_names = payload['tables'][table_name]
response = rename(connection, table_name, old_new_names)

# Report an error immediately if any of the requests fail
if response['status'] == 0:
return {'status' : 0, 'message' : "Error in table " + table_name + " " + response['message']}
return {"status" : 1, "message" : "success"}


@app.route("/gcbm/dynamic", methods=["POST"])
def gcbm_dynamic():
"""
Expand Down