-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.py
More file actions
112 lines (96 loc) · 3.28 KB
/
Copy pathapp.py
File metadata and controls
112 lines (96 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'''
File name: app.py
Function:
Comment: main file.
'''
from flask import render_template, request, jsonify
import pandas as pd
from typing import List
from application.mongo_component import mongoApi
from application import chatBot
from application.mysql_component import mysqlApi
from application import app, DB_NAME
from application.toolkit.sampleGenerator import Table , SampleBuilder
# Initialize chatbot
bot = chatBot.MenuBot()
# HomePage
@app.route("/")
def index():
return render_template('index.html')
# Upload API for Mongo and Mysql
@app.route("/save_upload", methods=["POST"])
def save_upload():
try:
inputFiles = request.files.getlist("file")
file_names = []
if inputFiles:
tables: List[Table] = []
for inputFile in inputFiles:
file_name = inputFile.filename.split('.')[0]
file_names.append(file_name)
table = get_table_item(inputFile, file_name)
tables.append(table)
# print(table.tableName)
# print(inputFile.content_type)
mongoApi.save_upload(inputFile, table.df)
# mysqlApi.save_upload_mysql(inputFile, table.df)
# init bot.query_builder
bot.sample_generator = SampleBuilder()
bot.sample_generator.tables = tables
if file_names:
names = '\n - '.join(file_names)
return jsonify({
"status": "success",
'message': f"Successfully uploaded files into Databases\n" \
f"\nThe following tables have been created:\n - {names}" \
f"\n\n Now! Type anything to Home page!"
}), 200
except Exception as e:
return jsonify({'upload error!': str(e)}), 500
# Mongo find
@app.route("/find", methods=["GET"])
def find_query():
query_find = "{'PostalCode': '14111'}"
query_find2 = "{'AddressID': 2}"
return jsonify(mongoApi.find(DB_NAME, 'AdventureWorks_CustomerMaster', query_find2)), 200
# find some sample
@app.route("/findAll", methods=["GET"])
def find_all_query():
return jsonify(mongoApi.find_all(DB_NAME, 'user')), 200
# current default api
@app.route('/get_response', methods=['POST'])
def get_bot_response():
user_input = request.form['user_input']
# print(user_input)
response = bot.process_message(user_input)
print('received successfully')
#print(response)
return response
#stop current session
@app.route('/kill', methods=['POST'])
def kill():
try:
bot.exit_chat()
return jsonify({
"status": "success",
"message": "Chat Reset!"
}), 200
except Exception as e:
print(e)
return jsonify({
"status": "error",
"message": str(e)
}), 500
def get_table_item(inputFile, file_name: str) -> Table:
df = pd.read_csv(inputFile)
char_columns = df.select_dtypes(include=['object', 'string']).columns.tolist()
num_columns = df.select_dtypes(include=['number']).columns.tolist()
table = Table(
tableName = file_name,
fields_str = char_columns,
fields_num = num_columns,
df = df
)
return table
if __name__ == "__main__":
app.run(port = 5001)