Update app/main.py
Browse files- app/main.py +37 -4
app/main.py
CHANGED
@@ -2,6 +2,7 @@ from fastapi import FastAPI, HTTPException, Header, Request
|
|
2 |
from fastapi.responses import JSONResponse, HTMLResponse
|
3 |
from fastapi.staticfiles import StaticFiles
|
4 |
from pydantic import BaseModel
|
|
|
5 |
import sqlite3
|
6 |
import sqlparse
|
7 |
import os
|
@@ -104,20 +105,52 @@ async def create_session():
|
|
104 |
sessions[session_id] = {"conn": create_session_db(), "domain": None}
|
105 |
return {"session_id": session_id}
|
106 |
|
|
|
107 |
@app.get("/api/databases")
|
108 |
async def get_databases():
|
109 |
questions_dir = os.path.join(BASE_DIR, "questions")
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
@app.post("/api/load-schema/{domain}")
|
113 |
async def load_schema(domain: str, session_id: str = Header(...)):
|
114 |
-
|
|
|
|
|
|
|
115 |
sessions[session_id] = {"conn": create_session_db(), "domain": domain}
|
116 |
try:
|
117 |
-
|
|
|
|
|
118 |
sessions[session_id]["conn"].commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
except sqlite3.Error as e:
|
120 |
-
|
|
|
121 |
del sessions[session_id]
|
122 |
raise HTTPException(status_code=500, detail=f"Database error: {str(e)}")
|
123 |
return {"message": f"Database {domain} loaded"}
|
|
|
2 |
from fastapi.responses import JSONResponse, HTMLResponse
|
3 |
from fastapi.staticfiles import StaticFiles
|
4 |
from pydantic import BaseModel
|
5 |
+
from loguru import logger
|
6 |
import sqlite3
|
7 |
import sqlparse
|
8 |
import os
|
|
|
105 |
sessions[session_id] = {"conn": create_session_db(), "domain": None}
|
106 |
return {"session_id": session_id}
|
107 |
|
108 |
+
|
109 |
@app.get("/api/databases")
|
110 |
async def get_databases():
|
111 |
questions_dir = os.path.join(BASE_DIR, "questions")
|
112 |
+
logger.debug(f"Checking databases in directory: {questions_dir}")
|
113 |
+
if not os.path.exists(questions_dir):
|
114 |
+
logger.error(f"Questions directory not found: {questions_dir}")
|
115 |
+
return {"databases": []}
|
116 |
+
databases = [f.replace(".json", "") for f in os.listdir(questions_dir) if f.endswith(".json")]
|
117 |
+
logger.debug(f"Found databases: {databases}")
|
118 |
+
return {"databases": databases}
|
119 |
+
|
120 |
+
from loguru import logger
|
121 |
+
|
122 |
+
@app.get("/api/databases")
|
123 |
+
async def get_databases():
|
124 |
+
questions_dir = os.path.join(BASE_DIR, "questions")
|
125 |
+
logger.debug(f"Checking databases in directory: {questions_dir}")
|
126 |
+
if not os.path.exists(questions_dir):
|
127 |
+
logger.error(f"Questions directory not found: {questions_dir}")
|
128 |
+
return {"databases": []}
|
129 |
+
databases = [f.replace(".json", "") for f in os.listdir(questions_dir) if f.endswith(".json")]
|
130 |
+
logger.debug(f"Found databases: {databases}")
|
131 |
+
return {"databases": databases}
|
132 |
|
133 |
@app.post("/api/load-schema/{domain}")
|
134 |
async def load_schema(domain: str, session_id: str = Header(...)):
|
135 |
+
logger.debug(f"Loading schema for domain: {domain}, session_id: {session_id}")
|
136 |
+
if session_id not in sessions:
|
137 |
+
logger.error(f"Invalid session: {session_id}")
|
138 |
+
raise HTTPException(status_code=401, detail="Invalid session")
|
139 |
sessions[session_id] = {"conn": create_session_db(), "domain": domain}
|
140 |
try:
|
141 |
+
schema_sql = load_schema_sql(domain)
|
142 |
+
logger.debug(f"Schema SQL loaded for {domain}")
|
143 |
+
sessions[session_id]["conn"].executescript(schema_sql)
|
144 |
sessions[session_id]["conn"].commit()
|
145 |
+
logger.info(f"Schema loaded successfully for {domain}")
|
146 |
+
except FileNotFoundError as e:
|
147 |
+
logger.error(f"Schema file not found: {str(e)}")
|
148 |
+
close_session_db(sessions[session_id]["conn"])
|
149 |
+
del sessions[session_id]
|
150 |
+
raise HTTPException(status_code=500, detail=str(e))
|
151 |
except sqlite3.Error as e:
|
152 |
+
logger.error(f"Database error: {str(e)}")
|
153 |
+
close_session_db(sessions[session_id]["conn"])
|
154 |
del sessions[session_id]
|
155 |
raise HTTPException(status_code=500, detail=f"Database error: {str(e)}")
|
156 |
return {"message": f"Database {domain} loaded"}
|