package com.xuqm.im.entity; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.xuqm.im.json.EpochMillisLocalDateTimeSerializer; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; import java.time.LocalDateTime; @Entity @Table(name = "im_webhook_config") public class WebhookConfigEntity { @Id private String id; @Column(nullable = false, length = 64) private String appId; @Column(nullable = false, length = 512) private String url; @Column(length = 256) private String secret; @Column(nullable = false) private boolean enabled; @Column(nullable = false) @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) private LocalDateTime createdAt; @Column(nullable = false) private int consecutiveFailures; @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) private LocalDateTime lastFailureAt; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getSecret() { return secret; } public void setSecret(String secret) { this.secret = secret; } public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) public LocalDateTime getCreatedAt() { return createdAt; } public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } public int getConsecutiveFailures() { return consecutiveFailures; } public void setConsecutiveFailures(int consecutiveFailures) { this.consecutiveFailures = consecutiveFailures; } @JsonSerialize(using = EpochMillisLocalDateTimeSerializer.class) public LocalDateTime getLastFailureAt() { return lastFailureAt; } public void setLastFailureAt(LocalDateTime lastFailureAt) { this.lastFailureAt = lastFailureAt; } }