package com.kt.event.content.biz.usecase.out;

import com.kt.event.content.biz.dto.RedisJobData;

/**
 * Job 저장 Port (Output Port)
 */
public interface JobWriter {

    /**
     * Job 생성/저장
     *
     * @param jobData Job 데이터
     * @param ttlSeconds TTL (초 단위)
     */
    void saveJob(RedisJobData jobData, long ttlSeconds);

    /**
     * Job 상태 업데이트
     *
     * @param jobId Job ID
     * @param status 상태
     * @param progress 진행률 (0-100)
     */
    void updateJobStatus(String jobId, String status, Integer progress);

    /**
     * Job 결과 메시지 업데이트
     *
     * @param jobId Job ID
     * @param resultMessage 결과 메시지
     */
    void updateJobResult(String jobId, String resultMessage);

    /**
     * Job 에러 메시지 업데이트
     *
     * @param jobId Job ID
     * @param errorMessage 에러 메시지
     */
    void updateJobError(String jobId, String errorMessage);
}
