Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.entity.solr;

import com.spice.profitmandi.dao.convertor.LocalDateTimeAttributeConverter;

import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * Entity for tracking failed Solr update attempts.
 * Failures are logged here for visibility and targeted retries.
 */
@Entity
@Table(name = "solr_update_failures", indexes = {
        @Index(name = "idx_status", columnList = "status"),
        @Index(name = "idx_catalog_id", columnList = "catalog_id")
})
public class SolrUpdateFailure implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "id", columnDefinition = "int(10) unsigned")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "catalog_id", nullable = false)
    private int catalogId;

    @Column(name = "item_id")
    private int itemId;

    @Column(name = "change_type", length = 50)
    private String changeType;

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

    @Column(name = "retry_count", columnDefinition = "int default 0")
    private int retryCount;

    @Column(name = "status", length = 20, columnDefinition = "varchar(20) default 'PENDING'")
    private String status;

    @Convert(converter = LocalDateTimeAttributeConverter.class)
    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @Convert(converter = LocalDateTimeAttributeConverter.class)
    @Column(name = "last_retry_at")
    private LocalDateTime lastRetryAt;

    public SolrUpdateFailure() {
        this.createdAt = LocalDateTime.now();
        this.status = "PENDING";
        this.retryCount = 0;
    }

    public int getId() {
        return id;
    }

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

    public int getCatalogId() {
        return catalogId;
    }

    public void setCatalogId(int catalogId) {
        this.catalogId = catalogId;
    }

    public int getItemId() {
        return itemId;
    }

    public void setItemId(int itemId) {
        this.itemId = itemId;
    }

    public String getChangeType() {
        return changeType;
    }

    public void setChangeType(String changeType) {
        this.changeType = changeType;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

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

    public int getRetryCount() {
        return retryCount;
    }

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

    public String getStatus() {
        return status;
    }

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

    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

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

    public LocalDateTime getLastRetryAt() {
        return lastRetryAt;
    }

    public void setLastRetryAt(LocalDateTime lastRetryAt) {
        this.lastRetryAt = lastRetryAt;
    }

    @Override
    public String toString() {
        return "SolrUpdateFailure{" +
                "id=" + id +
                ", catalogId=" + catalogId +
                ", itemId=" + itemId +
                ", changeType='" + changeType + '\'' +
                ", status='" + status + '\'' +
                ", retryCount=" + retryCount +
                ", createdAt=" + createdAt +
                ", lastRetryAt=" + lastRetryAt +
                '}';
    }
}