package incheon.uis.uld.service;

import java.util.Map;

/**
 * 레이어 동기화 Service 인터페이스
 * INSERT/UPDATE/DELETE 로직을 수정하여:
 * - 기존 upsert 방식을 순수 INSERT/UPDATE/DELETE로 변경
 * - 에러 유효성 검사 추가 (에러 발생 시 전체 rollback)
 * - 이력 테이블에 원본 데이터(프론트에서 넘어온 값) 직접 INSERT
 *
 * @author 호지원
 * @since 2025.01.30
 */
public interface LayerSyncService {

    /**
     * 레이어 INSERT 동기화
     *
     * 에러 체크:
     * - 에러A: ftc(첫 번째 PK) 값 없음 → "ftc 값이 없는 데이터가 있습니다."
     * - 에러B: PK 중복 → "pk값이 중복이 있습니다."
     *
     * @param requestBody 요청 데이터
     * @return 처리 결과 (insertedCount, historyCount 등)
     */
    Map<String, Object> insertSync(Map<String, Object> requestBody);

    /**
     * 레이어 UPDATE 동기화
     *
     * 에러 체크:
     * - 에러C: PK 값 없음 → "pk에 값이 없습니다."
     * - 에러D: 수정할 데이터 없음 → "수정할 데이터가 없습니다."
     *
     * @param requestBody 요청 데이터
     * @return 처리 결과 (updatedCount, historyCount 등)
     */
    Map<String, Object> updateSync(Map<String, Object> requestBody);

    /**
     * 레이어 DELETE 동기화 (Soft Delete: use_yn = 'N')
     *
     * 에러 체크:
     * - 에러E: PK 값 없음 → "pk값이 없습니다."
     * - 에러F: 삭제할 데이터 없음 → "삭제할 데이터가 없습니다."
     *
     * @param requestBody 요청 데이터
     * @return 처리 결과 (deletedCount, historyCount 등)
     */
    Map<String, Object> deleteSync(Map<String, Object> requestBody);
}
