IncludeArchivedToggleService.java
package io.featureprobe.api.service;
import io.featureprobe.api.base.db.IncludeDeleted;
import io.featureprobe.api.dao.entity.Toggle;
import io.featureprobe.api.dao.exception.ResourceConflictException;
import io.featureprobe.api.dao.repository.ToggleRepository;
import io.featureprobe.api.base.db.Archived;
import io.featureprobe.api.base.enums.ResourceType;
import io.featureprobe.api.base.enums.ValidateTypeEnum;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;
@AllArgsConstructor
@Service
public class IncludeArchivedToggleService {
private ToggleRepository toggleRepository;
@PersistenceContext
public EntityManager entityManager;
@Archived
public List<Toggle> findAllByProjectKey(String projectKey) {
return toggleRepository.findAllByProjectKey(projectKey);
}
@Archived
@IncludeDeleted
public void validateIncludeArchivedToggle(String projectKey, ValidateTypeEnum type, String value) {
switch (type) {
case KEY:
validateIncludeArchivedToggleByKey(projectKey, value);
break;
case NAME:
validateIncludeArchivedToggleByName(projectKey, value);
break;
default:
break;
}
}
@Archived
public void validateIncludeArchivedToggleByName(String projectKey, String name) {
if (toggleRepository.existsByProjectKeyAndName(projectKey, name)) {
throw new ResourceConflictException(ResourceType.ENVIRONMENT);
}
}
@Archived
public void validateIncludeArchivedToggleByKey(String projectKey, String key) {
if (toggleRepository.existsByProjectKeyAndKey(projectKey, key)) {
throw new ResourceConflictException(ResourceType.ENVIRONMENT);
}
}
}