package org.springframework.github; import java.util.ArrayList; import java.util.List; import io.micrometer.core.instrument.MeterRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; /** * @author Marcin Grzejszczak */ @Service class IssuesService { private static final Logger log = LoggerFactory.getLogger(IssuesService.class); private final IssuesRepository repository; IssuesService(IssuesRepository repository, MeterRegistry meterRegistry) { this.repository = repository; meterRegistry.gauge("issues", this, IssuesService::count); } void save(String user, String repo) { log.info("Saving user [{}], and repo [{}]", user, repo); this.repository.save(new Issues(user, repo)); } List<IssueDto> allIssues() { List<IssueDto> dtos = new ArrayList<>(); this.repository.findAll().forEach(i -> dtos.add(new IssueDto(i.getUsername(), i.getRepository()))); return dtos; } long numberOfIssues() { return count(); } private long count() { return this.repository.count(); } void deleteAll() { log.info("Deleting all issues"); this.repository.deleteAll(); } }