ALwrity + Wordpress + Wix + GSC integration

This commit is contained in:
ajaysi
2025-10-08 14:25:59 +05:30
parent 3bab3450dc
commit 5e3901c1c6
22 changed files with 2284 additions and 1222 deletions

View File

@@ -0,0 +1,129 @@
"""
Health Check Module
Handles health check endpoints and database health verification.
"""
from fastapi import HTTPException
from datetime import datetime
from typing import Dict, Any
from loguru import logger
class HealthChecker:
"""Manages health check functionality for ALwrity backend."""
def __init__(self):
self.startup_time = datetime.utcnow()
def basic_health_check(self) -> Dict[str, Any]:
"""Basic health check endpoint."""
try:
return {
"status": "healthy",
"message": "ALwrity backend is running",
"timestamp": datetime.utcnow().isoformat(),
"uptime": str(datetime.utcnow() - self.startup_time)
}
except Exception as e:
logger.error(f"Health check failed: {e}")
return {
"status": "error",
"message": f"Health check failed: {str(e)}",
"timestamp": datetime.utcnow().isoformat()
}
def database_health_check(self) -> Dict[str, Any]:
"""Database health check endpoint including persona tables verification."""
try:
from services.database import get_db_session
from models.persona_models import (
WritingPersona,
PlatformPersona,
PersonaAnalysisResult,
PersonaValidationResult
)
session = get_db_session()
if not session:
return {
"status": "error",
"message": "Could not get database session",
"timestamp": datetime.utcnow().isoformat()
}
# Test all persona tables
tables_status = {}
try:
session.query(WritingPersona).first()
tables_status["writing_personas"] = "ok"
except Exception as e:
tables_status["writing_personas"] = f"error: {str(e)}"
try:
session.query(PlatformPersona).first()
tables_status["platform_personas"] = "ok"
except Exception as e:
tables_status["platform_personas"] = f"error: {str(e)}"
try:
session.query(PersonaAnalysisResult).first()
tables_status["persona_analysis_results"] = "ok"
except Exception as e:
tables_status["persona_analysis_results"] = f"error: {str(e)}"
try:
session.query(PersonaValidationResult).first()
tables_status["persona_validation_results"] = "ok"
except Exception as e:
tables_status["persona_validation_results"] = f"error: {str(e)}"
session.close()
# Check if all tables are ok
all_ok = all(status == "ok" for status in tables_status.values())
return {
"status": "healthy" if all_ok else "warning",
"message": "Database connection successful" if all_ok else "Some persona tables may have issues",
"persona_tables": tables_status,
"timestamp": datetime.utcnow().isoformat()
}
except Exception as e:
logger.error(f"Database health check failed: {e}")
return {
"status": "error",
"message": f"Database health check failed: {str(e)}",
"timestamp": datetime.utcnow().isoformat()
}
def comprehensive_health_check(self) -> Dict[str, Any]:
"""Comprehensive health check including all services."""
try:
# Basic health
basic_health = self.basic_health_check()
# Database health
db_health = self.database_health_check()
# Determine overall status
overall_status = "healthy"
if basic_health["status"] != "healthy" or db_health["status"] == "error":
overall_status = "unhealthy"
elif db_health["status"] == "warning":
overall_status = "degraded"
return {
"status": overall_status,
"basic": basic_health,
"database": db_health,
"timestamp": datetime.utcnow().isoformat()
}
except Exception as e:
logger.error(f"Comprehensive health check failed: {e}")
return {
"status": "error",
"message": f"Comprehensive health check failed: {str(e)}",
"timestamp": datetime.utcnow().isoformat()
}