package com.qqchen.deploy.backend.deploy.integration.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;

/**
 * Git提交响应对象
 *
 * @author qqchen
 * @since 2025-12-04
 */
@Data
public class GitCommitResponse {
    
    /**
     * 提交SHA
     */
    private String id;
    
    /**
     * 短SHA（前8位）
     */
    @JsonProperty("short_id")
    private String shortId;
    
    /**
     * 提交标题
     */
    private String title;
    
    /**
     * 提交信息
     */
    private String message;
    
    /**
     * 作者名称
     */
    @JsonProperty("author_name")
    private String authorName;
    
    /**
     * 作者邮箱
     */
    @JsonProperty("author_email")
    private String authorEmail;
    
    /**
     * 提交者名称
     */
    @JsonProperty("committer_name")
    private String committerName;
    
    /**
     * 提交者邮箱
     */
    @JsonProperty("committer_email")
    private String committerEmail;
    
    /**
     * 创建时间
     */
    @JsonProperty("created_at")
    private OffsetDateTime createdAt;
    
    /**
     * 提交时间
     */
    @JsonProperty("committed_date")
    private OffsetDateTime committedDate;
    
    /**
     * Web URL
     */
    @JsonProperty("web_url")
    private String webUrl;
    
    /**
     * 获取提交时间（LocalDateTime）
     */
    public LocalDateTime getCommittedDateTime() {
        return committedDate != null ? 
            committedDate.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime() : null;
    }
    
    /**
     * 获取创建时间（LocalDateTime）
     */
    public LocalDateTime getCreatedDateTime() {
        return createdAt != null ? 
            createdAt.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime() : null;
    }
}
