package com.apress.spring.heatlh;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

import com.apress.spring.repository.JournalRepository;

@Component
public class QuotaHealthIndicator implements HealthIndicator{
	
	private static final Long QUOTA_MAX_SIZE = 10L;
	
	@Autowired
	JournalRepository repo;
	
	@Override
	public Health health() {
		long size = repo.count();
		if(size <= QUOTA_MAX_SIZE)
			return Health.up().withDetail("quota.entries", size).build();
		else
			return Health.down().withDetail("quota.entries", size).withException(new QuotaException("Quota Exceeded. Max allow: " + QUOTA_MAX_SIZE + ". See your Administrator for Quota policies.")).build();
	}	
	
	
}