27 lines
859 B
Java
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;
|
|
}
|
|
|
|
}
|