package go.kr.project.api.mapper;

import go.kr.project.api.model.CarBassMatterInqireVO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 자동차 기본 사항 조회 Mapper
 *
 * <p>API 호출 정보를 관리하는 Mapper 인터페이스입니다.</p>
 * <ul>
 *   <li>최초 요청 시: insertCarBassMatterInqire() 호출</li>
 *   <li>결과 수신 시: updateCarBassMatterInqire() 호출</li>
 * </ul>
 */
@Mapper
public interface VmisCarBassMatterInqireMapper {

    /**
     * 시퀀스로 새로운 자동차 기본 사항 조회 ID를 생성합니다.
     *
     * <p>형식: CBMI000000000001</p>
     *
     * @return 생성된 ID
     */
    String selectNextCarBassMatterInqireId();

    /**
     * 최초 API 요청 정보를 등록합니다.
     *
     * <p>요청 시점의 정보만 저장하며, 응답 정보는 null 상태입니다.</p>
     *
     * @param carBassMatterInqireVO 요청 정보
     * @return 등록된 행 수
     */
    int insertCarBassMatterInqire(CarBassMatterInqireVO carBassMatterInqireVO);

    /**
     * API 응답 결과를 업데이트합니다.
     *
     * <p>응답 받은 데이터를 기존 레코드에 업데이트합니다.</p>
     *
     * @param carBassMatterInqireVO 응답 정보 (carBassMatterInqire 필드는 필수)
     * @return 업데이트된 행 수
     */
    int updateCarBassMatterInqire(CarBassMatterInqireVO carBassMatterInqireVO);

    /**
     * ID로 조회 정보를 조회합니다.
     *
     * @param carBassMatterInqire 자동차 기본 사항 조회 ID
     * @return 조회된 정보
     */
    CarBassMatterInqireVO selectCarBassMatterInqireById(String carBassMatterInqire);

    /**
     * txId로 CAR_FFNLG_TRGT_ID를 업데이트합니다. (지연/미필 공통)
     *
     * @param txId 트랜잭션 ID
     * @param carFfnlgTrgtId 과태료 대상 ID (지연 또는 미필)
     * @return 업데이트된 행 수
     */
    int updateCarFfnlgTrgtIdByTxId(String txId, String carFfnlgTrgtId);
}
