# -*- coding: utf-8 -*-
"""
Health Check Module for Adtlas DAI Management System.

This module provides health check endpoints for monitoring the application
status, database connectivity, and other critical services.
"""

from django.http import JsonResponse
from django.db import connection
from django.core.cache import cache 

def health_check(request):
    """
    Health check endpoint for Docker and monitoring systems.
    
    Checks:
    - Database connectivity
    - Redis connectivity
    - Basic application status
    
    Returns:
        JsonResponse: Health status information
    """
    health_status = {
        'status': 'healthy',
        'service': 'Adtlas DAI Management System',
        'checks': {}
    }
    
    # Check database connectivity
    try:
        with connection.cursor() as cursor:
            cursor.execute("SELECT 1")
        health_status['checks']['database'] = 'healthy'
    except Exception as e:
        health_status['status'] = 'unhealthy'
        health_status['checks']['database'] = f'unhealthy: {str(e)}'
    
    # Check Redis connectivity
    try:
        cache.set('health_check', 'test', 30)
        cache.get('health_check')
        health_status['checks']['redis'] = 'healthy'
    except Exception as e:
        health_status['status'] = 'unhealthy'
        health_status['checks']['redis'] = f'unhealthy: {str(e)}'
    
    # Return appropriate HTTP status code
    status_code = 200 if health_status['status'] == 'healthy' else 503
    
    return JsonResponse(health_status, status=status_code)