DataInitializer.java

package de.aikiit.bilanzanalyser.entity.database;

import de.aikiit.bilanzanalyser.entity.database.repository.PaymentRepository;
import de.aikiit.bilanzanalyser.entity.database.repository.SourceRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Configuration
public class DataInitializer {

    @Bean
    CommandLineRunner initData(PaymentRepository paymentRepository, SourceRepository sourceRepository) {
        return args -> {

            // payment categories
            for (String category : List.of("KK", "Bar", "EC", "Überwiesen")) {
                paymentRepository.findByName(category).orElseGet(() -> {
                    PaymentEntity payment = new PaymentEntity();
                    payment.setName(category);
                    return paymentRepository.save(payment);
                });
            }

            // sources that can be used during upload
            for (String source : List.of("Ausgaben", "Einnahmen")) {
                sourceRepository.findByName(source).orElseGet(() -> {
                    SourceEntity sourceEntity = new SourceEntity();
                    sourceEntity.setName(source);
                    return sourceRepository.save(sourceEntity);
                });
            }
        };
    }
}