package com.eactive.testmaster.client.service;

import com.eactive.testmaster.client.entity.ApiScenario;
import com.eactive.testmaster.client.repository.ApiScenarioRepository;
import java.util.List;
import java.util.UUID;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Transactional
public class ApiScenarioMgmtService {

    @Autowired
    ApiScenarioRepository apiScenarioRepository;


    public List<ApiScenario> findAll() {
        return apiScenarioRepository.findAll();
    }

    public ApiScenario createApiScenario(ApiScenario apiScenario) {
        apiScenario.setId(UUID.randomUUID().toString());
        return apiScenarioRepository.save(apiScenario);
    }


    public ApiScenario updateApiScenario(String id, ApiScenario updatedApiScenario) {
        return apiScenarioRepository.findById(id)
                .map(apiScenario -> {
                    apiScenario.setName(updatedApiScenario.getName());
                    apiScenario.setDescription(updatedApiScenario.getDescription());
                    apiScenario.setScenario(updatedApiScenario.getScenario());
                    return apiScenarioRepository.save(apiScenario);
                }).orElseGet(() -> {
                    // If the ApiScenario with the given id doesn't exist, create a new one
                    updatedApiScenario.setId(id);
                    return apiScenarioRepository.save(updatedApiScenario);
                });
    }

    // Delete operation
    public void deleteApiScenario(String id) {
        apiScenarioRepository.deleteById(id);
    }

}
