package research.loghunter.entity; import jakarta.persistence.*; import lombok.*; import java.time.LocalDateTime; @Entity @Table(name = "patterns") @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class Pattern { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; // 패턴명 (예: NullPointer, DB Connection) @Column(nullable = false, length = 1000) private String regex; // 정규식 @Column(length = 1000) private String excludeRegex; // 제외 정규식 (매칭되면 에러에서 제외) @Column(nullable = false) private String severity; // CRITICAL, ERROR, WARN @Column(nullable = false) private Integer contextLines; // 에러 전후 캡처할 라인 수 private String description; // 설명 @Column(nullable = false) private Boolean active; @Column(nullable = false, updatable = false) private LocalDateTime createdAt; private LocalDateTime updatedAt; @PrePersist protected void onCreate() { createdAt = LocalDateTime.now(); updatedAt = LocalDateTime.now(); if (active == null) active = true; if (contextLines == null) contextLines = 5; if (severity == null) severity = "ERROR"; } @PreUpdate protected void onUpdate() { updatedAt = LocalDateTime.now(); } }