diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 73e7154..6a3ec5d 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -19,6 +19,8 @@ from flask_jwt_extended import ( get_jwt_identity, create_refresh_token, ) +from sqlalchemy import text +from app.extensions import db api = Blueprint("api", __name__) @@ -117,7 +119,24 @@ def notification_callback(): # Health Check Endpoint @api.route("/health", methods=["GET"]) def health_check(): - return {"status": "ok"}, 200 + + + response = {"status": "ok"} + db_status = "Connect Successful" + error = None + + try: + # Simple query to validate DB connection + db.session.execute(text("SELECT 1")) + except Exception as e: + db_status = "Connection Failed" + error = str(e) + + response["db_status"] = db_status + if error: + response["error"] = error + + return jsonify(response), 200 if db_status == "Connect Successful" else 500 # Authorize endpoint diff --git a/app/swagger/digifi_swagger.json b/app/swagger/digifi_swagger.json index a9ceb03..26b0445 100644 --- a/app/swagger/digifi_swagger.json +++ b/app/swagger/digifi_swagger.json @@ -83,6 +83,10 @@ "description": "Find out more", "url": "https://www.simbrellang.net" } + }, + { + "name": "Health", + "description": "System health check including DB status." } ], "paths": { @@ -106,6 +110,38 @@ }, "/Repayment": { "$ref": "swagger/paths/Repayment.json" + }, + "/health": { + "get": { + "tags": ["Health"], + "summary": "Health Check", + "description": "Returns service health information including DB connection status.", + "responses": { + "200": { + "description": "Health check successful", + "content": { + "application/json": { + "example": { + "status": "ok", + "db_status": "Connection Successful" + } + } + } + }, + "500": { + "description": "Health check failed", + "content": { + "application/json": { + "example": { + "status": "ok", + "db_status": "Connection Failed", + "error": "could not connect to server: Connection refused" + } + } + } + } + } + } } }, "components": {