LiamKhoaLe commited on
Commit
9effa4e
·
1 Parent(s): 79bbada

Add health checker

Browse files
Files changed (2) hide show
  1. app/health/check_status.py +32 -0
  2. app/main.py +2 -0
app/health/check_status.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app/health/check_status.py
2
+ from fastapi import APIRouter
3
+ from app.db import db
4
+ from bson.json_util import dumps
5
+ import logging
6
+
7
+ router = APIRouter()
8
+ logger = logging.getLogger("book-query")
9
+
10
+ @router.get("")
11
+ async def get_status():
12
+ try:
13
+ docs = await db.documents.find().sort("_id", -1).limit(5).to_list(length=5)
14
+ doc_count = await db.documents.count_documents({})
15
+ embed_count = await db.embeddings.count_documents({})
16
+
17
+ return {
18
+ "status": "ok",
19
+ "documents_total": doc_count,
20
+ "embeddings_total": embed_count,
21
+ "recent_documents": [
22
+ {
23
+ "id": doc.get("_id"),
24
+ "title": doc.get("title"),
25
+ "status": doc.get("status"),
26
+ }
27
+ for doc in docs
28
+ ]
29
+ }
30
+ except Exception as e:
31
+ logger.exception("❌ Health check failed")
32
+ return {"status": "error", "error": str(e)}
app/main.py CHANGED
@@ -20,6 +20,7 @@
20
  # app/main.py
21
  from fastapi import FastAPI, WebSocket
22
  from app.routers import search, import_doc
 
23
 
24
  # Debugger
25
  import logging
@@ -37,6 +38,7 @@ app = FastAPI()
37
 
38
  app.include_router(search.router, prefix="/search")
39
  app.include_router(import_doc.router, prefix="/import")
 
40
 
41
  @app.websocket("/ws/documents/{document_id}")
42
  async def websocket_endpoint(websocket: WebSocket, document_id: str):
 
20
  # app/main.py
21
  from fastapi import FastAPI, WebSocket
22
  from app.routers import search, import_doc
23
+ from app.health import check_status
24
 
25
  # Debugger
26
  import logging
 
38
 
39
  app.include_router(search.router, prefix="/search")
40
  app.include_router(import_doc.router, prefix="/import")
41
+ app.include_router(check_status.router, prefix="/health")
42
 
43
  @app.websocket("/ws/documents/{document_id}")
44
  async def websocket_endpoint(websocket: WebSocket, document_id: str):