package com.its.op.service.vms; import com.its.op.model.dto.vms.TbVmsCtlrDto; import com.its.op.model.entity.vms.TbVmsCtlr; import com.its.op.repository.vms.TbVmsCtlrRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; @Slf4j @RequiredArgsConstructor @Service public class TbVmsCtlrService { private final TbVmsCtlrRepository repo; // 데이터 1건 조회, 없으면 exception private TbVmsCtlr requireOne(Long id) { return repo.findById(id) .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id)); } // 전체 데이터 조회 public List findAll() { List result = new ArrayList<>(); List data = this.repo.findAll(); for (TbVmsCtlr entity : data) { result.add(entity.toDto()); } return result; } // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함) public TbVmsCtlrDto findById(Long id) { TbVmsCtlr entity = requireOne(id); return entity.toDto(); } // 데이터 변경 public TbVmsCtlrDto updateById(Long id, TbVmsCtlrDto.TbVmsCtlrUpdReq req) { TbVmsCtlr entity = requireOne(id); entity.updateInfo(req); this.repo.save(entity); return entity.toDto(); } // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성) public List mergeInfoList(List reqList) { List result = new ArrayList<>(); for (TbVmsCtlrDto.TbVmsCtlrUpdReq req : reqList) { TbVmsCtlr obj = req.toEntity(); this.repo.save(obj); result.add(obj.toDto()); } return result; } // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성) public TbVmsCtlrDto mergeInfo(TbVmsCtlrDto.TbVmsCtlrUpdReq req) { TbVmsCtlr obj = req.toEntity(); this.repo.save(obj); return obj.toDto(); } // 정보 삭제-개별, 데이터 존재하지 않으면 Exception public TbVmsCtlrDto deleteById(Long id) { TbVmsCtlr entity = requireOne(id); this.repo.deleteById(id); return entity.toDto(); } // 정보 삭제-목록, 존재하는 데이터 만 삭제 public List deleteByIds(List ids) { List result = new ArrayList<>(); for (Long id : ids) { Optional obj = this.repo.findById(id); if (obj.isPresent()) { this.repo.deleteById(id); result.add(obj.get().toDto()); } } return result; } }