package com.cs102.attendance.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/health") public class HealthController { @Autowired private DataSource dataSource; @GetMapping("/database") public ResponseEntity> checkDatabaseConnection() { Map response = new HashMap<>(); try (Connection connection = dataSource.getConnection()) { // Test the connection boolean isValid = connection.isValid(5); // 5 second timeout if (isValid) { response.put("status", "UP"); response.put("database", "Connected"); response.put("url", connection.getMetaData().getURL()); response.put("driver", connection.getMetaData().getDriverName()); response.put("version", connection.getMetaData().getDatabaseProductVersion()); return ResponseEntity.ok(response); } else { response.put("status", "DOWN"); response.put("database", "Connection invalid"); return ResponseEntity.status(503).body(response); } } catch (SQLException e) { response.put("status", "DOWN"); response.put("database", "Connection failed"); response.put("error", e.getMessage()); return ResponseEntity.status(503).body(response); } } }