package sagan.guides.support;
import sagan.guides.GuideMetadata;
import sagan.guides.Topical;
import sagan.projects.support.ProjectMetadataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
/**
* Repository implementation providing data access services for tutorial guides.
*/
@Component
public class Topicals extends PrefixDocRepository<Topical> {
static final String REPO_PREFIX = "top-";
public static final String CACHE_NAME = "cache.topicals";
public static final Class<?> CACHE_TYPE = Topical.class;
public static final String CACHE_TTL = "${cache.topicals.timetolive:0}"; // never expires
@Autowired
public Topicals(GuideOrganization org, ProjectMetadataService projectMetadataService) {
super(org, projectMetadataService, REPO_PREFIX);
}
@Override
protected Topical create(GuideMetadata metadata) {
return new Topical(metadata);
}
@Override
@Cacheable(value = CACHE_NAME)
public Topical find(String guide) {
return super.find(guide);
}
@CacheEvict(value = CACHE_NAME)
public void evictFromCache(String guide) {
log.info("Tutorial evicted from cache: {}", guide);
}
}