package com.vrobot.api.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import jakarta.persistence.EntityManager; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; @RestController public class HealthController { @Autowired private EntityManager entityManager; @Autowired private RedisTemplate redisTemplate; @GetMapping("/") public Map home() { Map response = new HashMap<>(); response.put("service", "Spring Boot API"); response.put("status", "running"); response.put("timestamp", LocalDateTime.now()); response.put("endpoints", Map.of( "health", "/api/health", "actuator", "/actuator/health" )); return response; } @GetMapping("/api/health") public Map health() { Map response = new HashMap<>(); boolean mysqlConnected = false; try { entityManager.createNativeQuery("SELECT 1").getSingleResult(); mysqlConnected = true; } catch (Exception e) { } boolean redisConnected = false; try { redisTemplate.opsForValue().set("health-check", LocalDateTime.now().toString()); String value = redisTemplate.opsForValue().get("health-check"); redisConnected = value != null; } catch (Exception e) { } response.put("status", mysqlConnected && redisConnected ? "UP" : "DOWN"); response.put("timestamp", LocalDateTime.now()); response.put("mysql", mysqlConnected ? "connected" : "disconnected"); response.put("redis", redisConnected ? "connected" : "disconnected"); response.put("message", "Spring Boot API for vrobot.shop"); return response; } }