package com.zioinfo.kintex.module.m5.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * RenderJob 영속 매퍼(내구성 저장 — 갤러리/이력/쿼터 정산).
 * <b>TODO(kintex-db-engineer)</b>: resources/mybatis/mapper/RenderJobMapper.xml (RenderJob 테이블).
 * Redis는 큐/실시간 상태, DB는 이력·쿼터의 정본. 성공 시에만 쿼터 차감(PLANNING §6-5).
 */
@Mapper
public interface RenderJobMapper {

    /** 잡 생성 기록 insert. */
    void insertJob(@Param("params") Map<String, Object> params);

    /** 상태·이미지 URL 갱신(워커 콜백 시). */
    void updateStatus(@Param("jobId") String jobId,
                      @Param("status") String status,
                      @Param("imageUrl") String imageUrl,
                      @Param("errorMessage") String errorMessage);

    /** 부스 단위 잡 목록(SCR-12 갤러리). */
    List<Map<String, Object>> findByBooth(@Param("boothId") String boothId,
                                          @Param("shotPreset") String shotPreset);

    /** 부스 단위 완료(DONE) 렌더 이력(SCR-06 이력 갤러리) — 최신순. 이미지 URL 있는 성공 결과만. */
    List<Map<String, Object>> findHistoryByBooth(@Param("boothId") String boothId);

    /** 행사별 성공 생성 건수(쿼터 산정). */
    int countSucceededByEvent(@Param("eventId") String eventId);
}
