lakshmivairamani commited on
Commit
183de5e
·
verified ·
1 Parent(s): 6952a04

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +313 -95
app.py CHANGED
@@ -48,6 +48,19 @@ app.add_middleware(
48
  allow_methods=["*"],
49
  allow_headers=["*"],
50
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  @app.get("/")
53
  async def read_root(request: Request):
@@ -55,14 +68,9 @@ async def read_root(request: Request):
55
 
56
  def verify_user(username: str, password: str):
57
  try:
58
- # Connect to MySQL database
59
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
60
- host='217.21.88.10',
61
- database='u852023448_redmindgpt')
62
-
63
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
64
  cursor = cnx.cursor()
65
- query = "SELECT * FROM user_detail WHERE username = %s AND password = %s"
66
  values = (username, password)
67
  cursor.execute(query, values)
68
  result = cursor.fetchone()
@@ -70,7 +78,7 @@ def verify_user(username: str, password: str):
70
  cnx.close()
71
  if result is not None:
72
  logging.info(f"User {username} logged in successfully")
73
- return "success"
74
  else:
75
  logging.info(f"User {username} login failed")
76
  return "failure"
@@ -80,9 +88,11 @@ def verify_user(username: str, password: str):
80
 
81
  @app.post("/validate-user")
82
  async def validate_user(request: Request, username: str = Form(...), password: str = Form(...)):
83
- status = verify_user(username, password)
84
  if status == 'success':
85
- return templates.TemplateResponse("dashboard.html", {"request": request, "username": username})
 
 
86
  else:
87
  return templates.TemplateResponse("index.html", {"request": request})
88
 
@@ -96,12 +106,7 @@ async def submit_company_profile(request: Request,
96
  logging.info(f"Form data - company_name: {company_name}, company_code: {company_code}, domain: {domain}, llm_tools: {llm_tools}")
97
 
98
  try:
99
- # Connect to MySQL database
100
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
101
- host='217.21.88.10',
102
- database='u852023448_redmindgpt')
103
-
104
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
105
  cursor = cnx.cursor()
106
  query = "INSERT INTO company_detail (company_name, company_code, domain, llm_tools) VALUES (%s, %s, %s, %s)"
107
  values = (company_name, company_code, domain, ",".join(llm_tools))
@@ -121,11 +126,7 @@ async def submit_company_profile(request: Request,
121
  @app.get("/api/companies")
122
  async def get_companies():
123
  try:
124
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
125
- host='217.21.88.10',
126
- database='u852023448_redmindgpt')
127
-
128
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
129
  cursor = cnx.cursor()
130
  query = "SELECT company_name FROM company_detail "
131
  cursor.execute(query)
@@ -136,29 +137,33 @@ async def get_companies():
136
  except mysql.connector.Error as err:
137
  logging.error(f"Database error: {err}")
138
  raise HTTPException(status_code=500, detail="Internal Server Error")
139
-
 
 
140
  @app.get("/company_profile")
141
  async def company_profile(request: Request):
142
- return templates.TemplateResponse("company_profile.html", {"request": request})
143
  @app.get("/api/company_id")
144
  async def get_company_id(company_name: str):
145
  print(f"Received company_name: {company_name}") # Debug statement
146
  logging.info(f"Received request for company name: {company_name}")
147
  try:
148
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
149
- host='217.21.88.10',
150
- database='u852023448_redmindgpt')
151
-
152
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
153
  cursor = cnx.cursor()
154
- query = "SELECT company_id FROM company_detail WHERE company_name = %s"
155
  cursor.execute(query, (company_name,))
156
  result = cursor.fetchone()
157
  cursor.close()
158
  cnx.close()
159
 
160
  if result:
161
- return {"company_id": result[0]}
 
 
 
 
 
 
162
  else:
163
  logging.error(f"Company not found for name: {company_name}")
164
  raise HTTPException(status_code=404, detail="Company not found")
@@ -166,9 +171,47 @@ async def get_company_id(company_name: str):
166
  logging.error(f"Database error: {err}")
167
  raise HTTPException(status_code=500, detail="Internal Server Error")
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  @app.get("/knowledgebase")
170
  async def knowledgebase(request: Request):
171
- return templates.TemplateResponse("knowledgebase.html", {"request": request})
 
 
172
  @app.post("/upload_document")
173
  async def upload_document(
174
  request: Request,
@@ -177,6 +220,7 @@ async def upload_document(
177
  documentName: str = Form(...),
178
  documentDescription: str = Form(...),
179
  department: str = Form(...),
 
180
  version: str = Form(...),
181
  lastUpdated: str = Form(...)
182
  ):
@@ -190,44 +234,37 @@ async def upload_document(
190
  shutil.copyfileobj(uploadFile.file, buffer)
191
 
192
  # Save the details to the database
193
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
194
- host='217.21.88.10',
195
- database='u852023448_redmindgpt')
196
-
197
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
198
  cursor = cnx.cursor()
199
  query = """
200
- INSERT INTO knowledge_base (company_id,file_path, document_name, document_desc, department, version, last_updated)
201
- VALUES (%s,%s, %s, %s, %s, %s, %s)
202
  """
203
- values = (company_id,file_path, documentName, documentDescription, department, version, lastUpdated)
204
  cursor.execute(query, values)
205
  cnx.commit()
206
  cursor.close()
207
  cnx.close()
208
 
209
  logging.info(f"Document {documentName} uploaded successfully")
210
- return RedirectResponse(url="/", status_code=302)
211
  except mysql.connector.Error as err:
212
  logging.error(f"Database error: {err}")
213
  raise HTTPException(status_code=500, detail="Internal Server Error")
214
 
 
215
  @app.get("/api/document_upload")
216
  async def get_document(company_id: str = Query(...), company_name: str = Query(...)):
217
  print(f"Received companyId and name: {company_id},{company_name}") # Log rec
218
  #async def get_data_connectors(company_id: str, company_name: str):
219
  logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
220
  try:
221
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
222
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
223
- host='217.21.88.10',
224
- database='u852023448_redmindgpt')
225
-
226
  cursor = cnx.cursor()
227
  query = """
228
- SELECT kb.company_id, kb.file_path, kb.document_name, kb.document_desc,kb.department,kb.version,kb.last_updated
229
- FROM u852023448_redmindgpt.knowledge_base kb
230
- JOIN u852023448_redmindgpt.company_detail cd ON kb.company_id = cd.company_id
231
  WHERE kb.company_id = %s and cd.company_name=%s
232
  """
233
  logging.info(f"Executing query: {query} with company_id: {company_id}")
@@ -236,22 +273,24 @@ async def get_document(company_id: str = Query(...), company_name: str = Query(.
236
  print(f"Query parameters: {params}")
237
 
238
  cursor.execute(query, params) # Pa
239
- result = cursor.fetchone()
240
  logging.info(f"Query result: {result}")
241
  cursor.close
242
  cnx.close()
243
-
244
- if result:
245
- logging.info(f"Document found for company_id: {company_id}")
246
- return {
247
- "company_id": result[0],
248
- # "file_path":result[1],
249
- "document_name": result[2],
250
- "document_desc": result[3],
251
- "department": result[4],
252
- "version": result[5],
253
- "last_updated": result[6]
254
- }
 
 
255
  else:
256
  logging.warning(f"No document found for company_id: {company_id}")
257
  raise HTTPException(status_code=404, detail="Data document not found")
@@ -261,39 +300,74 @@ async def get_document(company_id: str = Query(...), company_name: str = Query(.
261
 
262
  @app.get("/data_connectors")
263
  async def data_connectors(request: Request):
264
- return templates.TemplateResponse("data_connectors.html", {"request": request})
 
 
265
  @app.post("/save_data_connectors")
266
  async def save_data_connectors( request: Request,
267
  company_id: int = Form(...),
268
  database: List[str] = Form(...),
269
  server: str = Form(...),
270
  port: str = Form(...),
271
- databaseName: List[str] = Form(...),
272
  username: str=Form(...),
273
  password: str=Form(...),
274
- tables: List[str] = Form(...)):
275
  logging.info(f"Received form submission for database_connectors")
276
  try:
277
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
278
- host='217.21.88.10',
279
- database='u852023448_redmindgpt')
280
-
281
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
282
  cursor = cnx.cursor()
283
- #databasetype_json=json.dumps(database)
284
- query = "INSERT INTO data_connectors(company_id,databasetype, serverip, port, database_name,username,password,dbtablename) VALUES (%s,%s, %s, %s, %s,%s,%s,%s)"
285
- values = (company_id, ",".join(database), server, port, ",".join(databaseName),username,password, ",".join(tables))
286
- logging.info(f"Executing query: {query} with values: {values}")
287
- cursor.execute(query, values)
288
- cnx.commit()
289
- logging.info(f"Query executed successfully, {cursor.rowcount} row(s) affected")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  cursor.close()
291
  cnx.close()
292
- logging.info(f"Data_connectors for {database} inserted successfully")
293
  return RedirectResponse(url="/data_connectors", status_code=302)
 
294
  except mysql.connector.Error as err:
295
  logging.error(f"Database error: {err}")
296
  raise HTTPException(status_code=500, detail="Internal Server Error")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
 
298
  @app.get("/api/check_data_connectors")
299
  async def get_data_connectors(company_id: str = Query(...), company_name: str = Query(...)):
@@ -301,16 +375,12 @@ async def get_data_connectors(company_id: str = Query(...), company_name: str =
301
  #async def get_data_connectors(company_id: str, company_name: str):
302
  logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
303
  try:
304
- cnx = mysql.connector.connect(user='u852023448_redmindgpt', password='redmindGpt@123',
305
- host='217.21.88.10',
306
- database='u852023448_redmindgpt')
307
-
308
- #cnx = mysql.connector.connect(user='root', password='', host='localhost', database='redmind_gpt')
309
  cursor = cnx.cursor()
310
  query = """
311
  SELECT dc.company_id, dc.databasetype, dc.serverip, dc.port,dc.database_name, dc.username, dc.password ,dc.dbtablename
312
- FROM u852023448_redmindgpt.data_connectors dc
313
- JOIN u852023448_redmindgpt.company_detail cd ON dc.company_id = cd.company_id
314
  WHERE dc.company_id = %s and cd.company_name=%s
315
  """
316
  logging.info(f"Executing query: {query} with company_id: {company_id}")
@@ -325,16 +395,18 @@ async def get_data_connectors(company_id: str = Query(...), company_name: str =
325
  cnx.close()
326
 
327
  if result:
 
 
328
  logging.info(f"Data found for company_id: {company_id}")
329
  return {
330
  "company_id": result[0],
331
- "databasetype":result[1],
332
  "serverip": result[2],
333
  "port": result[3],
334
  "database_name": result[4],
335
  "username": result[5],
336
  "password": result[6],
337
- "dbtablename": result[7]
338
  }
339
  else:
340
  logging.warning(f"No data found for company_id: {company_id}")
@@ -342,19 +414,165 @@ async def get_data_connectors(company_id: str = Query(...), company_name: str =
342
  except mysql.connector.Error as err:
343
  logging.error(f"Database error: {err}")
344
  raise HTTPException(status_code=500, detail="Internal Server Error")
345
-
346
-
347
-
348
  @app.get("/API_connectors")
349
  async def API_connectors(request: Request):
350
- return templates.TemplateResponse("API_connectors.html", {"request": request})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
  @app.get("/prompt_template")
352
  async def prompt_template(request: Request):
353
- return templates.TemplateResponse("prompt_template.html", {"request": request})
354
- @app.get("/chatbot")
355
- async def chatbot(request: Request):
356
- return templates.TemplateResponse("chatbot.html", {"request": request})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
 
358
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
 
 
 
 
 
 
 
 
 
48
  allow_methods=["*"],
49
  allow_headers=["*"],
50
  )
51
+ DB_USER = 'root'
52
+ DB_PASSWORD = ''
53
+ DB_HOST = 'localhost'
54
+ DB_NAME = 'redmind_gpt'
55
+
56
+ # Function to create a new database connection
57
+ def get_db_connection():
58
+ try:
59
+ cnx = mysql.connector.connect(user=DB_USER, password=DB_PASSWORD, host=DB_HOST, database=DB_NAME)
60
+ return cnx
61
+ except mysql.connector.Error as err:
62
+ logging.error(f"Database connection error: {err}")
63
+ return None
64
 
65
  @app.get("/")
66
  async def read_root(request: Request):
 
68
 
69
  def verify_user(username: str, password: str):
70
  try:
71
+ cnx = get_db_connection()
 
 
 
 
 
72
  cursor = cnx.cursor()
73
+ query = "SELECT role FROM user_detail WHERE username = %s AND password = %s"
74
  values = (username, password)
75
  cursor.execute(query, values)
76
  result = cursor.fetchone()
 
78
  cnx.close()
79
  if result is not None:
80
  logging.info(f"User {username} logged in successfully")
81
+ return "success",result[0]
82
  else:
83
  logging.info(f"User {username} login failed")
84
  return "failure"
 
88
 
89
  @app.post("/validate-user")
90
  async def validate_user(request: Request, username: str = Form(...), password: str = Form(...)):
91
+ status,role = verify_user(username, password)
92
  if status == 'success':
93
+ logging.info(f"user role {role}is rerturned")
94
+ return templates.TemplateResponse("dashboard.html", {"request": request, "username": username,"role": role})
95
+
96
  else:
97
  return templates.TemplateResponse("index.html", {"request": request})
98
 
 
106
  logging.info(f"Form data - company_name: {company_name}, company_code: {company_code}, domain: {domain}, llm_tools: {llm_tools}")
107
 
108
  try:
109
+ cnx = get_db_connection()
 
 
 
 
 
110
  cursor = cnx.cursor()
111
  query = "INSERT INTO company_detail (company_name, company_code, domain, llm_tools) VALUES (%s, %s, %s, %s)"
112
  values = (company_name, company_code, domain, ",".join(llm_tools))
 
126
  @app.get("/api/companies")
127
  async def get_companies():
128
  try:
129
+ cnx = get_db_connection()
 
 
 
 
130
  cursor = cnx.cursor()
131
  query = "SELECT company_name FROM company_detail "
132
  cursor.execute(query)
 
137
  except mysql.connector.Error as err:
138
  logging.error(f"Database error: {err}")
139
  raise HTTPException(status_code=500, detail="Internal Server Error")
140
+ @app.get("/dashboard")
141
+ async def dashboard(request: Request):
142
+ return templates.TemplateResponse("dashboard.html", {"request": request,"title":"Dashboard"})
143
  @app.get("/company_profile")
144
  async def company_profile(request: Request):
145
+ return templates.TemplateResponse("company_profile.html", {"request": request,"title":"Company Profile"})
146
  @app.get("/api/company_id")
147
  async def get_company_id(company_name: str):
148
  print(f"Received company_name: {company_name}") # Debug statement
149
  logging.info(f"Received request for company name: {company_name}")
150
  try:
151
+ cnx = get_db_connection()
 
 
 
 
152
  cursor = cnx.cursor()
153
+ query = "SELECT * FROM company_detail WHERE company_name = %s"
154
  cursor.execute(query, (company_name,))
155
  result = cursor.fetchone()
156
  cursor.close()
157
  cnx.close()
158
 
159
  if result:
160
+ llm_tools = result[4].split(',') if result[4] else []
161
+ return {"company_id": result[0],
162
+ "company_name":result[1],
163
+ "company_code":result[2],
164
+ "domain":result[3],
165
+ "llm_tools":llm_tools
166
+ }
167
  else:
168
  logging.error(f"Company not found for name: {company_name}")
169
  raise HTTPException(status_code=404, detail="Company not found")
 
171
  logging.error(f"Database error: {err}")
172
  raise HTTPException(status_code=500, detail="Internal Server Error")
173
 
174
+ @app.get("/api/companydetails")
175
+ async def get_companies():
176
+ print(f"Received company_name") # Debug statement
177
+ logging.info(f"Received request for company name")
178
+
179
+ try:
180
+ cnx = get_db_connection()
181
+ cursor = cnx.cursor()
182
+ query = "SELECT * FROM company_detail"
183
+ cursor.execute(query)
184
+ result = cursor.fetchall()
185
+ logging.info(f"Query result: {result}")
186
+ cursor.close()
187
+ cnx.close()
188
+
189
+ companies = []
190
+ for row in result:
191
+ llm_tools = row[4].split(',') if row[4] else []
192
+ logging.info(row[4])
193
+ companies.append({
194
+ "company_id": row[0],
195
+ "company_name": row[1],
196
+ "company_code": row[2],
197
+ "domain": row[3],
198
+ "llm_tools": row[4]
199
+ })
200
+
201
+ if companies:
202
+ return companies
203
+ else:
204
+ logging.error(f"Company not found for name: {result[1]}")
205
+ raise HTTPException(status_code=404, detail="Company not found")
206
+ except mysql.connector.Error as err:
207
+ logging.error(f"Database error: {err}")
208
+ raise HTTPException(status_code=500, detail="Internal Server Error")
209
+
210
  @app.get("/knowledgebase")
211
  async def knowledgebase(request: Request):
212
+ return templates.TemplateResponse("knowledgebase.html", {"request": request,"title":"KnowledgeBase"})
213
+
214
+ #to insert into knowledgebase
215
  @app.post("/upload_document")
216
  async def upload_document(
217
  request: Request,
 
220
  documentName: str = Form(...),
221
  documentDescription: str = Form(...),
222
  department: str = Form(...),
223
+ vectorDBflag:str=Form(...),
224
  version: str = Form(...),
225
  lastUpdated: str = Form(...)
226
  ):
 
234
  shutil.copyfileobj(uploadFile.file, buffer)
235
 
236
  # Save the details to the database
237
+ cnx = get_db_connection()
 
 
 
 
238
  cursor = cnx.cursor()
239
  query = """
240
+ INSERT INTO knowledge_base (company_id,file_path, document_name, document_desc, department, version,vectorDBflag, last_updated)
241
+ VALUES (%s,%s, %s, %s, %s, %s,%s, %s)
242
  """
243
+ values = (company_id,file_path, documentName, documentDescription, department, version,vectorDBflag, lastUpdated)
244
  cursor.execute(query, values)
245
  cnx.commit()
246
  cursor.close()
247
  cnx.close()
248
 
249
  logging.info(f"Document {documentName} uploaded successfully")
250
+ return RedirectResponse(url="/knowledgebase", status_code=302)
251
  except mysql.connector.Error as err:
252
  logging.error(f"Database error: {err}")
253
  raise HTTPException(status_code=500, detail="Internal Server Error")
254
 
255
+ #to retrieve from knowledgebase
256
  @app.get("/api/document_upload")
257
  async def get_document(company_id: str = Query(...), company_name: str = Query(...)):
258
  print(f"Received companyId and name: {company_id},{company_name}") # Log rec
259
  #async def get_data_connectors(company_id: str, company_name: str):
260
  logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
261
  try:
262
+ cnx = get_db_connection()
 
 
 
 
263
  cursor = cnx.cursor()
264
  query = """
265
+ SELECT kb.company_id, kb.file_path, kb.document_name, kb.document_desc,kb.department,kb.version,kb.vectorDBflag,kb.last_updated
266
+ FROM redmind_gpt.knowledge_base kb
267
+ JOIN redmind_gpt.company_detail cd ON kb.company_id = cd.company_id
268
  WHERE kb.company_id = %s and cd.company_name=%s
269
  """
270
  logging.info(f"Executing query: {query} with company_id: {company_id}")
 
273
  print(f"Query parameters: {params}")
274
 
275
  cursor.execute(query, params) # Pa
276
+ result = cursor.fetchall()
277
  logging.info(f"Query result: {result}")
278
  cursor.close
279
  cnx.close()
280
+ companies=[]
281
+ for row in result:
282
+ companies.append({
283
+ "company_id": row[0],
284
+ # "file_path":row[1],
285
+ "document_name": row[2],
286
+ "document_desc": row[3],
287
+ "department": row[4],
288
+ "version": row[5],
289
+ "vectorDBflag":row[6],
290
+ "last_updated": row[7]
291
+ })
292
+ if companies:
293
+ return companies
294
  else:
295
  logging.warning(f"No document found for company_id: {company_id}")
296
  raise HTTPException(status_code=404, detail="Data document not found")
 
300
 
301
  @app.get("/data_connectors")
302
  async def data_connectors(request: Request):
303
+ return templates.TemplateResponse("data_connectors.html", {"request": request, "title": "Data Connectors"})
304
+
305
+ #to insert into data_connectors
306
  @app.post("/save_data_connectors")
307
  async def save_data_connectors( request: Request,
308
  company_id: int = Form(...),
309
  database: List[str] = Form(...),
310
  server: str = Form(...),
311
  port: str = Form(...),
312
+ databaseName:List[str]= Form(...),
313
  username: str=Form(...),
314
  password: str=Form(...),
315
+ selectedTables: List[str] = Form(...)):
316
  logging.info(f"Received form submission for database_connectors")
317
  try:
318
+ cnx = get_db_connection()
 
 
 
 
319
  cursor = cnx.cursor()
320
+ # Check if the company_id already exists in the data_connectors table
321
+ check_query = "SELECT COUNT(*) FROM data_connectors WHERE company_id = %s"
322
+ cursor.execute(check_query, (company_id,))
323
+ exists = cursor.fetchone()[0] > 0
324
+
325
+ if exists:
326
+ # Update the existing record
327
+ query = """
328
+ UPDATE data_connectors
329
+ SET databasetype = %s, serverip = %s, port = %s, database_name = %s, username = %s, password = %s, dbtablename = %s
330
+ WHERE company_id = %s
331
+ """
332
+ values = (",".join(database), server, port, ",".join(databaseName), username, password, ",".join(selectedTables), company_id)
333
+ logging.info(f"Executing update query: {query} with values: {values}")
334
+ cursor.execute(query, values)
335
+ cnx.commit()
336
+ logging.info(f"Query executed successfully, {cursor.rowcount} row(s) updated")
337
+ else:
338
+ # Insert a new record
339
+ query = """
340
+ INSERT INTO data_connectors(company_id, databasetype, serverip, port, database_name, username, password, dbtablename)
341
+ VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
342
+ """
343
+ values = (company_id, ",".join(database), server, port, ",".join(databaseName), username, password, ",".join(selectedTables))
344
+ logging.info(f"Executing insert query: {query} with values: {values}")
345
+ cursor.execute(query, values)
346
+ cnx.commit()
347
+ logging.info(f"Query executed successfully, {cursor.rowcount} row(s) inserted")
348
+
349
  cursor.close()
350
  cnx.close()
351
+ logging.info(f"Data_connectors for {database} processed successfully")
352
  return RedirectResponse(url="/data_connectors", status_code=302)
353
+
354
  except mysql.connector.Error as err:
355
  logging.error(f"Database error: {err}")
356
  raise HTTPException(status_code=500, detail="Internal Server Error")
357
+ # #databasetype_json=json.dumps(database)
358
+ # query = "INSERT INTO data_connectors(company_id,databasetype, serverip, port, database_name,username,password,dbtablename) VALUES (%s,%s, %s, %s, %s,%s,%s,%s)"
359
+ # values = (company_id, ",".join(database), server, port, ",".join(databaseName),username,password, ",".join(selectedTables))
360
+ # logging.info(f"Executing query: {query} with values: {values}")
361
+ # cursor.execute(query, values)
362
+ # cnx.commit()
363
+ # logging.info(f"Query executed successfully, {cursor.rowcount} row(s) affected")
364
+ # cursor.close()
365
+ # cnx.close()
366
+ # logging.info(f"Data_connectors for {database} inserted successfully")
367
+ # return RedirectResponse(url="/data_connectors", status_code=302)
368
+ # except mysql.connector.Error as err:
369
+ # logging.error(f"Database error: {err}")
370
+ # raise HTTPException(status_code=500, detail="Internal Server Error")
371
 
372
  @app.get("/api/check_data_connectors")
373
  async def get_data_connectors(company_id: str = Query(...), company_name: str = Query(...)):
 
375
  #async def get_data_connectors(company_id: str, company_name: str):
376
  logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
377
  try:
378
+ cnx = get_db_connection()
 
 
 
 
379
  cursor = cnx.cursor()
380
  query = """
381
  SELECT dc.company_id, dc.databasetype, dc.serverip, dc.port,dc.database_name, dc.username, dc.password ,dc.dbtablename
382
+ FROM redmind_gpt.data_connectors dc
383
+ JOIN redmind_gpt.company_detail cd ON dc.company_id = cd.company_id
384
  WHERE dc.company_id = %s and cd.company_name=%s
385
  """
386
  logging.info(f"Executing query: {query} with company_id: {company_id}")
 
395
  cnx.close()
396
 
397
  if result:
398
+ databasetype = result[1]
399
+ dbtablename = result[7].split(',') if result[7] else []
400
  logging.info(f"Data found for company_id: {company_id}")
401
  return {
402
  "company_id": result[0],
403
+ "databasetype":databasetype,
404
  "serverip": result[2],
405
  "port": result[3],
406
  "database_name": result[4],
407
  "username": result[5],
408
  "password": result[6],
409
+ "dbtablename": dbtablename
410
  }
411
  else:
412
  logging.warning(f"No data found for company_id: {company_id}")
 
414
  except mysql.connector.Error as err:
415
  logging.error(f"Database error: {err}")
416
  raise HTTPException(status_code=500, detail="Internal Server Error")
417
+
 
 
418
  @app.get("/API_connectors")
419
  async def API_connectors(request: Request):
420
+ return templates.TemplateResponse("API_connectors.html", {"request": request,"title":"API Connectors"})
421
+ #save api connectors
422
+ @app.post("/api/save_api_details")
423
+ async def API_saveconnectors(request: Request,
424
+ company_id:int=Form(...),
425
+ APIName:str=Form(...),
426
+ APIEndpoint:str=Form(...),
427
+ Auth_Bearer:str=Form(...),
428
+ Inputjson:str=Form(...),
429
+ OutputJson:str=Form(...),
430
+ Description:str=Form(...)):
431
+ logging.info(f"Received form submission for database_connectors")
432
+ try:
433
+ cnx =get_db_connection()
434
+ cursor = cnx.cursor()
435
+ #databasetype_json=json.dumps(database)
436
+ query = "INSERT INTO api_connectors(company_id,api_name, api_endpoint, auth_token, input_param,output_json,description) VALUES (%s,%s, %s, %s, %s,%s,%s)"
437
+ values = (company_id, APIName, APIEndpoint, Auth_Bearer, Inputjson,OutputJson,Description)
438
+ logging.info(f"Executing query: {query} with values: {values}")
439
+ cursor.execute(query, values)
440
+ cnx.commit()
441
+ logging.info(f"Query executed successfully, {cursor.rowcount} row(s) affected")
442
+ cursor.close()
443
+ cnx.close()
444
+ logging.info(f"Data_connectors for {APIName} inserted successfully")
445
+ return RedirectResponse(url="/data_connectors", status_code=302)
446
+ except mysql.connector.Error as err:
447
+ logging.error(f"Database error: {err}")
448
+ raise HTTPException(status_code=500, detail="Internal Server Error")
449
+ # retrieve api connectors
450
+ @app.get("/api/get_api_connectors")
451
+ async def get_api_connectors(company_id: str = Query(...), company_name: str = Query(...)):
452
+ print(f"Received companyId and name: {company_id},{company_name}") # Log rec
453
+ #async def get_data_connectors(company_id: str, company_name: str):
454
+ logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
455
+ try:
456
+ cnx =get_db_connection()
457
+ cursor = cnx.cursor()
458
+ query = """
459
+ SELECT ac.company_id, ac.api_name, ac.api_endpoint,ac.auth_token,ac.input_param, ac.output_json, ac.description
460
+ FROM redmind_gpt.api_connectors ac
461
+ JOIN redmind_gpt.company_detail cd ON ac.company_id = cd.company_id
462
+ WHERE ac.company_id = %s and cd.company_name=%s
463
+ """
464
+ logging.info(f"Executing query: {query} with company_id: {company_id}")
465
+ params = (company_id,company_name)
466
+ logging.info(f"Query parameters: {params}")
467
+ print(f"Query parameters: {params}")
468
+
469
+ cursor.execute(query, params) # Pa
470
+ result = cursor.fetchall()
471
+ logging.info(f"Query result: {result}")
472
+ cursor.close()
473
+ cnx.close()
474
+ companies=[]
475
+ for row in result:
476
+ companies.append({
477
+ "company_id": row[0],
478
+ "APIName":row[1],
479
+ "APIEndpoint": row[2]
480
+ # "Auth_Bearer": result[3],
481
+ # "Inputjson": result[4],
482
+ #"OutputJson": result[5],
483
+ #"description": result[6]
484
+
485
+ })
486
+ if companies:
487
+ return companies
488
+ else:
489
+ logging.warning(f"No data found for company_id: {company_id}")
490
+ raise HTTPException(status_code=404, detail="Data connector not found")
491
+ except mysql.connector.Error as err:
492
+ logging.error(f"Database error: {err}")
493
+ raise HTTPException(status_code=500, detail="Internal Server Error")
494
+
495
+
496
  @app.get("/prompt_template")
497
  async def prompt_template(request: Request):
498
+ return templates.TemplateResponse("prompt_template.html", {"request": request,"title":"Prompt Templates"})
499
+ # to insert into prompt templates
500
+ @app.post("/api/save_prompt_details")
501
+ async def prompt_saveconnectors(request: Request,
502
+ company_id:int=Form(...),
503
+ scenario:str=Form(...),
504
+ sampleprompt:str=Form(...),
505
+ comments:str=Form(...),
506
+ ):
507
+ logging.info(f"Received form submission for database_connectors")
508
+ try:
509
+ cnx =get_db_connection()
510
+ cursor = cnx.cursor()
511
+ #databasetype_json=json.dumps(database)
512
+ query = "INSERT INTO prompt_templates(company_id,scenario, prompts, comments) VALUES (%s,%s, %s, %s)"
513
+ values = (company_id, scenario, sampleprompt, comments)
514
+ logging.info(f"Executing query: {query} with values: {values}")
515
+ cursor.execute(query, values)
516
+ cnx.commit()
517
+ logging.info(f"Query executed successfully, {cursor.rowcount} row(s) affected")
518
+ cursor.close()
519
+ cnx.close()
520
+ logging.info(f"Data_connectors for {scenario} inserted successfully")
521
+ return RedirectResponse(url="/prompt_template", status_code=302)
522
+ except mysql.connector.Error as err:
523
+ logging.error(f"Database error: {err}")
524
+ raise HTTPException(status_code=500, detail="Internal Server Error")
525
+ # retrieve api connectors
526
+ @app.get("/api/get_prompt_templates")
527
+ async def get_prompt_connectors(company_id: str = Query(...), company_name: str = Query(...)):
528
+ print(f"Received companyId and name: {company_id},{company_name}") # Log rec
529
+ #async def get_data_connectors(company_id: str, company_name: str):
530
+ logging.info(f"Received request for company_id and company_id: {company_id},{company_name}")
531
+ try:
532
+ cnx =get_db_connection()
533
+ cursor = cnx.cursor()
534
+ query = """
535
+ SELECT pt.company_id,pt.scenario,pt.prompts,pt.comments
536
+ FROM redmind_gpt.prompt_templates pt
537
+ JOIN redmind_gpt.company_detail cd ON pt.company_id = cd.company_id
538
+ WHERE pt.company_id = %s and cd.company_name=%s
539
+ """
540
+ logging.info(f"Executing query: {query} with company_id: {company_id}")
541
+ params = (company_id,company_name)
542
+ logging.info(f"Query parameters: {params}")
543
+ print(f"Query parameters: {params}")
544
 
545
+ cursor.execute(query, params) # Pa
546
+ result = cursor.fetchall()
547
+ logging.info(f"Query result: {result}")
548
+ cursor.close()
549
+ cnx.close()
550
+ companies=[]
551
+ for row in result:
552
+ companies.append({
553
+ "company_id": row[0],
554
+ "scenario":row[1],
555
+ "prompt": row[2]
556
+ # "Auth_Bearer": result[3],
557
+ # "Inputjson": result[4],
558
+ #"OutputJson": result[5],
559
+ #"description": result[6]
560
+
561
+ })
562
+ if companies:
563
+ return companies
564
+ else:
565
+ logging.warning(f"No data found for company_id: {company_id}")
566
+ raise HTTPException(status_code=404, detail="Data connector not found")
567
+ except mysql.connector.Error as err:
568
+ logging.error(f"Database error: {err}")
569
+ raise HTTPException(status_code=500, detail="Internal Server Error")
570
 
571
 
572
+ @app.get("/chatbot")
573
+ async def chatbot(request: Request):
574
+ return templates.TemplateResponse("chatbot.html", {"request": request,"title":"Chatbot"})
575
+
576
+ if __name__ == "__main__":
577
+ import uvicorn
578
+ uvicorn.run(app, host="127.0.0.1", port=8000)