package com.auction; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.eclipse.microprofile.health.HealthCheck; import org.eclipse.microprofile.health.HealthCheckResponse; import org.eclipse.microprofile.health.Liveness; import org.eclipse.microprofile.health.Readiness; import java.nio.file.Files; import java.nio.file.Paths; /** * Health checks for Auction Monitor. * Provides liveness and readiness probes for Kubernetes/Docker deployment. */ @ApplicationScoped public class AuctionMonitorHealthCheck { @Inject DatabaseService db; /** * Liveness probe - checks if application is alive * GET /health/live */ @Liveness public static class LivenessCheck implements HealthCheck { @Override public HealthCheckResponse call() { return HealthCheckResponse.up("Auction Monitor is alive"); } } /** * Readiness probe - checks if application is ready to serve requests * GET /health/ready */ @Readiness @ApplicationScoped public static class ReadinessCheck implements HealthCheck { @Inject DatabaseService db; @Override public HealthCheckResponse call() { try { // Check database connection var auctions = db.getAllAuctions(); // Check database path exists var dbPath = Paths.get("C:\\mnt\\okcomputer\\output\\cache.db"); if (!Files.exists(dbPath.getParent())) { return HealthCheckResponse.down("Database directory does not exist"); } return HealthCheckResponse.named("database") .up() .withData("auctions", auctions.size()) .build(); } catch (Exception e) { return HealthCheckResponse.named("database") .down() .withData("error", e.getMessage()) .build(); } } } /** * Startup probe - checks if application has started correctly * GET /health/started */ @org.eclipse.microprofile.health.Startup @ApplicationScoped public static class StartupCheck implements HealthCheck { @Inject DatabaseService db; @Override public HealthCheckResponse call() { try { // Verify database schema db.ensureSchema(); return HealthCheckResponse.named("startup") .up() .withData("message", "Database schema initialized") .build(); } catch (Exception e) { return HealthCheckResponse.named("startup") .down() .withData("error", e.getMessage()) .build(); } } } }