EditorCheckpoint.java

package com.taxonomy.editor.persistence;

import jakarta.persistence.*;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;

/** Durable editor persistence; mutations occur only under the workspace transaction lock. */
@Entity
@Table(name = "editor_checkpoint")
public class EditorCheckpoint {
    @Id
    @Column(name = "id", nullable = false, length = 101)
    String id;

    @Column(name = "scope_id", nullable = false, length = 64)
    String scopeId;

    @Column(name = "command_id", nullable = false, length = 36)
    String commandId;

    @Column(name = "actor", nullable = false, length = 320)
    String actor;

    @Column(name = "occurred_at", nullable = false, length = 40)
    String occurredAt;

    @Column(name = "rationale", nullable = false, length = 1000)
    String rationale;

    @Column(name = "fingerprint", nullable = false, length = 64)
    String fingerprint;

    @Column(name = "from_revision", nullable = false)
    long fromRevision;

    @Column(name = "semantic_revision", nullable = false)
    long revision;

    @Column(name = "expected_commit", nullable = true, length = 40)
    String expectedCommit;

    @JdbcTypeCode(SqlTypes.LONG32VARCHAR)
    @Column(name = "dsl", nullable = false)
    String dsl;

    @Column(name = "commit_id", nullable = true, length = 40)
    String commitId;

    @Column(name = "completed", nullable = false)
    boolean completed;

    @Column(name = "commit_created", nullable = false)
    boolean commitCreated;

    @Column(name = "failure_code", length = 40)
    String failureCode;

    @Column(name = "origin", nullable = false, length = 40)
    String origin;

    protected EditorCheckpoint() {}
}