ScheduledPublishingTask.java 4.2 KB
// platform/entity/ScheduledPublishingTask.java
package com.aigeo.platform.entity;

import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;;
import java.time.LocalDateTime;

@Entity
@Table(name = "ai_scheduled_publishing_tasks")
public class ScheduledPublishingTask {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "company_id", nullable = false)
    private Integer companyId;

    @Column(name = "publishable_type")
    private String publishableType;

    @Column(name = "publishable_id", nullable = false)
    private Integer publishableId;

    @Column(name = "article_id")
    private Integer articleId;

    @Column(name = "platform_config_id", nullable = false)
    private Integer platformConfigId;

    @Column(name = "schedule_time", nullable = false)
    
    private LocalDateTime scheduleTime;

    @Enumerated(EnumType.STRING)
    private PublishingTaskStatus status;

    @Column(name = "retry_count")
    private Integer retryCount;

    @Column(name = "max_retries")
    private Integer maxRetries;

    @Column(name = "last_attempt_at")
    
    private LocalDateTime lastAttemptAt;

    @Column(name = "error_message")
    private String errorMessage;

    @Column(name = "created_at")
    
    private LocalDateTime createdAt;

    @Column(name = "updated_at")
    
    private LocalDateTime updatedAt;

    // Constructors
    public ScheduledPublishingTask() {}

    // Getters and Setters
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    public String getPublishableType() {
        return publishableType;
    }

    public void setPublishableType(String publishableType) {
        this.publishableType = publishableType;
    }

    public Integer getPublishableId() {
        return publishableId;
    }

    public void setPublishableId(Integer publishableId) {
        this.publishableId = publishableId;
    }

    public Integer getArticleId() {
        return articleId;
    }

    public void setArticleId(Integer articleId) {
        this.articleId = articleId;
    }

    public Integer getPlatformConfigId() {
        return platformConfigId;
    }

    public void setPlatformConfigId(Integer platformConfigId) {
        this.platformConfigId = platformConfigId;
    }

    public LocalDateTime getScheduleTime() {
        return scheduleTime;
    }

    public void setScheduleTime(LocalDateTime scheduleTime) {
        this.scheduleTime = scheduleTime;
    }

    public PublishingTaskStatus getStatus() {
        return status;
    }

    public void setStatus(PublishingTaskStatus status) {
        this.status = status;
    }

    public Integer getRetryCount() {
        return retryCount;
    }

    public void setRetryCount(Integer retryCount) {
        this.retryCount = retryCount;
    }

    public Integer getMaxRetries() {
        return maxRetries;
    }

    public void setMaxRetries(Integer maxRetries) {
        this.maxRetries = maxRetries;
    }

    public LocalDateTime getLastAttemptAt() {
        return lastAttemptAt;
    }

    public void setLastAttemptAt(LocalDateTime lastAttemptAt) {
        this.lastAttemptAt = lastAttemptAt;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }

    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }
}