Initial commit

This commit is contained in:
2026-07-07 15:54:55 +05:30
commit fc55700d0e
55 changed files with 82488 additions and 0 deletions

65
backend/main.py Normal file
View File

@@ -0,0 +1,65 @@
from fastapi import FastAPI, BackgroundTasks, HTTPException
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from fastapi.middleware.cors import CORSMiddleware
import os
import json
import asyncio
import sys
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
from backend.scheduler import start_scheduler
from backend.core.scanner import (
load_json, scan_schema_for_db, scan_images_for_db_table, load_config, get_scan_status,
SCHEMA_RESULTS_PATH, IMAGE_RESULTS_PATH
)
app = FastAPI(title="DB Health & Image Sync Monitor")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event("startup")
async def startup_event():
start_scheduler()
@app.get("/api/status")
async def get_status():
return get_scan_status()
@app.get("/api/schema/latest")
async def get_schema_latest():
return load_json(SCHEMA_RESULTS_PATH)
@app.get("/api/image/latest")
async def get_image_latest():
return load_json(IMAGE_RESULTS_PATH)
@app.post("/api/scan/schema/{db_name}")
async def trigger_schema_scan(db_name: str):
config = load_config()
result = await scan_schema_for_db(db_name, config)
return result
@app.post("/api/scan/image/{db_name}/{table_name}")
async def trigger_image_scan(db_name: str, table_name: str):
config = load_config()
result = await scan_images_for_db_table(db_name, table_name, config)
return result
frontend_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'frontend')
app.mount("/static", StaticFiles(directory=frontend_dir), name="static")
@app.get("/")
async def serve_index():
return FileResponse(
os.path.join(frontend_dir, 'index.html'),
headers={"Cache-Control": "no-cache, no-store, must-revalidate"}
)