Data-old/src/main/java/de/ph87/data/series/SeriesService.java
2024-10-15 16:26:48 +02:00

27 lines
859 B
Java

package de.ph87.data.series;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@Transactional
@RequiredArgsConstructor
public class SeriesService {
private final SeriesRepository seriesRepository;
@NonNull
public Series getOrCreateByName(@NonNull final String name, @NonNull final SeriesMode mode) {
final Series series = seriesRepository.findByNameOrAliasesContains(name, name).orElseGet(() -> seriesRepository.save(new Series(name, mode)));
if (series.getMode() != mode) {
throw new RuntimeException("'mode' argument for getOrCreateByName does not match 'mode' of existing Series: mode=%s, series=%s".formatted(mode, series));
}
return series;
}
}