1 package de.dlr.shepard.common.healthz;
2
3 import com.mongodb.MongoException;
4 import com.mongodb.client.MongoDatabase;
5 import jakarta.enterprise.context.ApplicationScoped;
6 import jakarta.inject.Inject;
7 import jakarta.inject.Named;
8 import org.bson.Document;
9 import org.eclipse.microprofile.health.HealthCheck;
10 import org.eclipse.microprofile.health.HealthCheckResponse;
11 import org.eclipse.microprofile.health.Readiness;
12
13 @Readiness
14 @ApplicationScoped
15 public class MongoHealthCheck implements HealthCheck {
16
17 @Inject
18 @Named("mongoDatabase")
19 MongoDatabase mongoDatabase;
20
21 private boolean getMongoDBHealth() {
22 Document result;
23 try {
24 result = mongoDatabase.runCommand(new Document("ping", "1"));
25 } catch (MongoException ex) {
26 return false;
27 }
28 return result.containsKey("ok");
29 }
30
31 @Override
32 public HealthCheckResponse call() {
33 return HealthCheckResponse.named("MongoDB connection health check").status(getMongoDBHealth()).build();
34 }
35 }