ArchitectureDslDocument.java

package com.taxonomy.architecture.model;

import jakarta.persistence.*;
import org.hibernate.annotations.Nationalized;

import java.time.Instant;

/**
 * Tracks a parsed/loaded DSL document with its Git commit context.
 */
@Entity
@Table(name = "architecture_dsl_document")
public class ArchitectureDslDocument {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Nationalized
    @Column(nullable = false)
    private String path;

    @Nationalized
    @Column(name = "commit_id")
    private String commitId;

    @Nationalized
    @Column
    private String branch;

    @Nationalized
    @Column
    private String namespace;

    @Nationalized
    @Column(name = "dsl_version")
    private String dslVersion;

    @Nationalized
    @Lob
    @Column(name = "raw_content", nullable = false, length = 100000)
    private String rawContent;

    @Column(name = "parsed_at", nullable = false)
    private Instant parsedAt;

    @PrePersist
    protected void onCreate() {
        if (parsedAt == null) {
            parsedAt = Instant.now();
        }
    }

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public String getPath() { return path; }
    public void setPath(String path) { this.path = path; }

    public String getCommitId() { return commitId; }
    public void setCommitId(String commitId) { this.commitId = commitId; }

    public String getBranch() { return branch; }
    public void setBranch(String branch) { this.branch = branch; }

    public String getNamespace() { return namespace; }
    public void setNamespace(String namespace) { this.namespace = namespace; }

    public String getDslVersion() { return dslVersion; }
    public void setDslVersion(String dslVersion) { this.dslVersion = dslVersion; }

    public String getRawContent() { return rawContent; }
    public void setRawContent(String rawContent) { this.rawContent = rawContent; }

    public Instant getParsedAt() { return parsedAt; }
    public void setParsedAt(Instant parsedAt) { this.parsedAt = parsedAt; }
}