package com.zhengmeng.ocrplatform.recognition;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Entity
@Table(name = "ocr_text_block")
public class OcrTextBlockEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "task_id", nullable = false, length = 64)
    private String taskId;

    @Column(name = "run_no", nullable = false)
    private int runNo = 1;

    @Column(name = "page_no", nullable = false)
    private int pageNo = 1;

    @Column(name = "block_type", nullable = false, length = 64)
    private String blockType;

    @Column(name = "text_content", nullable = false, columnDefinition = "text")
    private String textContent;

    @Column(precision = 8, scale = 6)
    private BigDecimal confidence;

    @Column(name = "bbox_json", columnDefinition = "longtext")
    private String bboxJson;

    @Column(name = "reading_order")
    private Integer readingOrder;

    @Column(name = "source_engine", length = 128)
    private String sourceEngine;

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

    public Long getId() {
        return id;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public int getRunNo() {
        return runNo;
    }

    public void setRunNo(int runNo) {
        this.runNo = runNo;
    }

    public int getPageNo() {
        return pageNo;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }

    public String getBlockType() {
        return blockType;
    }

    public void setBlockType(String blockType) {
        this.blockType = blockType;
    }

    public String getTextContent() {
        return textContent;
    }

    public void setTextContent(String textContent) {
        this.textContent = textContent;
    }

    public BigDecimal getConfidence() {
        return confidence;
    }

    public void setConfidence(BigDecimal confidence) {
        this.confidence = confidence;
    }

    public String getBboxJson() {
        return bboxJson;
    }

    public void setBboxJson(String bboxJson) {
        this.bboxJson = bboxJson;
    }

    public Integer getReadingOrder() {
        return readingOrder;
    }

    public void setReadingOrder(Integer readingOrder) {
        this.readingOrder = readingOrder;
    }

    public String getSourceEngine() {
        return sourceEngine;
    }

    public void setSourceEngine(String sourceEngine) {
        this.sourceEngine = sourceEngine;
    }

    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

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