package tech.easyflow.skill.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;

import java.io.Serializable;
import java.util.Date;

/**
 * Skill 二进制内容写入意图实体。
 *
 * <p>写入意图独立于正式内容索引提交，用于在进程异常退出后定位尚未激活的物理对象。</p>
 */
@Table("tb_skill_content_write_intent")
public class SkillContentWriteIntent implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 内容引用。 */
    @Id
    private String contentRef;
    /** 写入预留令牌。 */
    private String reservationToken;
    /** 内容哈希。 */
    private String contentHash;
    /** 可在写入前确定的稳定存储定位符。 */
    private String storageLocator;
    /** 媒体类型。 */
    private String mediaType;
    /** 内容字节数。 */
    private Long size;
    /** PENDING、WRITING 或 CLEANING 状态。 */
    private String state;
    /** 创建时间。 */
    private Date created;
    /** 修改时间。 */
    private Date modified;

    /**
     * 获取内容引用。
     *
     * @return 内容引用
     */
    public String getContentRef() {
        return contentRef;
    }

    /**
     * 设置内容引用。
     *
     * @param contentRef 内容引用
     */
    public void setContentRef(String contentRef) {
        this.contentRef = contentRef;
    }

    /**
     * 获取写入预留令牌。
     *
     * @return 写入预留令牌
     */
    public String getReservationToken() {
        return reservationToken;
    }

    /**
     * 设置写入预留令牌。
     *
     * @param reservationToken 写入预留令牌
     */
    public void setReservationToken(String reservationToken) {
        this.reservationToken = reservationToken;
    }

    /**
     * 获取内容哈希。
     *
     * @return 内容哈希
     */
    public String getContentHash() {
        return contentHash;
    }

    /**
     * 设置内容哈希。
     *
     * @param contentHash 内容哈希
     */
    public void setContentHash(String contentHash) {
        this.contentHash = contentHash;
    }

    /**
     * 获取稳定存储定位符。
     *
     * @return 稳定存储定位符
     */
    public String getStorageLocator() {
        return storageLocator;
    }

    /**
     * 设置稳定存储定位符。
     *
     * @param storageLocator 稳定存储定位符
     */
    public void setStorageLocator(String storageLocator) {
        this.storageLocator = storageLocator;
    }

    /**
     * 获取媒体类型。
     *
     * @return 媒体类型
     */
    public String getMediaType() {
        return mediaType;
    }

    /**
     * 设置媒体类型。
     *
     * @param mediaType 媒体类型
     */
    public void setMediaType(String mediaType) {
        this.mediaType = mediaType;
    }

    /**
     * 获取内容字节数。
     *
     * @return 内容字节数
     */
    public Long getSize() {
        return size;
    }

    /**
     * 设置内容字节数。
     *
     * @param size 内容字节数
     */
    public void setSize(Long size) {
        this.size = size;
    }

    /**
     * 获取写入状态。
     *
     * @return 写入状态
     */
    public String getState() {
        return state;
    }

    /**
     * 设置写入状态。
     *
     * @param state 写入状态
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * 获取创建时间。
     *
     * @return 创建时间
     */
    public Date getCreated() {
        return created;
    }

    /**
     * 设置创建时间。
     *
     * @param created 创建时间
     */
    public void setCreated(Date created) {
        this.created = created;
    }

    /**
     * 获取修改时间。
     *
     * @return 修改时间
     */
    public Date getModified() {
        return modified;
    }

    /**
     * 设置修改时间。
     *
     * @param modified 修改时间
     */
    public void setModified(Date modified) {
        this.modified = modified;
    }
}
