diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncident.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncident.java new file mode 100644 index 0000000..40d95c8 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncident.java @@ -0,0 +1,71 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +import com.eactive.apim.portal.common.entity.Auditable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Table(name = "DJB_APISTATUS_INCIDENT") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class DjbApistatusIncident extends Auditable { + + @Id + @SequenceGenerator(name = "seqDjbApistatusIncident", + sequenceName = "SEQ_DJB_APISTATUS_INCIDENT", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqDjbApistatusIncident") + @Column(name = "INCIDENT_ID", nullable = false) + private Long incidentId; + + @Enumerated(EnumType.STRING) + @Column(name = "KIND", length = 20, nullable = false) + private IncidentKind kind; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE", length = 30) + private IncidentState state; + + @Enumerated(EnumType.STRING) + @Column(name = "PREVIOUS_STATE", length = 30) + private IncidentState previousState; + + @Column(name = "TITLE", length = 500, nullable = false) + private String title; + + @Column(name = "SUMMARY", length = 2000) + private String summary; + + @Column(name = "STARTED_AT") + private LocalDateTime startedAt; + + @Column(name = "END_AT") + private LocalDateTime endAt; + + @Column(name = "DETECTED_BY", length = 30, nullable = false) + private String detectedBy = "MANUAL"; + + @Column(name = "INTERFACE_ID", length = 200) + private String interfaceId; + + @Column(name = "NOTICE_ID", length = 36) + private String noticeId; + + @Column(name = "DRAFT_YN", length = 1, nullable = false) + private String draftYn = "N"; + + @Column(name = "FIX_YN", length = 1, nullable = false) + private String fixYn = "N"; +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApi.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApi.java new file mode 100644 index 0000000..698b292 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApi.java @@ -0,0 +1,38 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +import com.eactive.apim.portal.common.entity.Auditable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Table(name = "DJB_APISTATUS_INCIDENT_API") +@IdClass(DjbApistatusIncidentApiId.class) +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true) +public class DjbApistatusIncidentApi extends Auditable { + + @Id + @EqualsAndHashCode.Include + @Column(name = "INCIDENT_ID", nullable = false) + private Long incidentId; + + @Id + @EqualsAndHashCode.Include + @Column(name = "API_ID", length = 30, nullable = false) + private String apiId; + + @Column(name = "API_NAME", length = 200) + private String apiName; + + @Column(name = "RECOVERED_AT") + private LocalDateTime recoveredAt; +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApiId.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApiId.java new file mode 100644 index 0000000..60847c5 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentApiId.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DjbApistatusIncidentApiId implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long incidentId; + private String apiId; +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentTimeline.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentTimeline.java new file mode 100644 index 0000000..51acee5 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/DjbApistatusIncidentTimeline.java @@ -0,0 +1,51 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +import com.eactive.apim.portal.common.entity.Auditable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Table(name = "DJB_APISTATUS_INCIDENT_TIMELINE") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class DjbApistatusIncidentTimeline extends Auditable { + + @Id + @SequenceGenerator(name = "seqDjbApistatusIncidentTimeline", + sequenceName = "SEQ_DJB_APISTATUS_INCIDENT_TIMELINE", allocationSize = 1) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqDjbApistatusIncidentTimeline") + @Column(name = "TIMELINE_ID", nullable = false) + private Long timelineId; + + @Column(name = "INCIDENT_ID", nullable = false) + private Long incidentId; + + @Column(name = "EVENT_AT", nullable = false) + private LocalDateTime eventAt; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE_AFTER", length = 30) + private IncidentState stateAfter; + + @Column(name = "BODY", length = 4000, nullable = false) + private String body; + + @Column(name = "AUTHOR_TYPE", length = 20, nullable = false) + private String authorType = "OPERATOR"; + + @Column(name = "VISIBLE_YN", length = 1, nullable = false) + private String visibleYn = "Y"; +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentKind.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentKind.java new file mode 100644 index 0000000..7880108 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentKind.java @@ -0,0 +1,6 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +public enum IncidentKind { + INCIDENT, + MAINTENANCE +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentState.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentState.java new file mode 100644 index 0000000..a329c5a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/entity/IncidentState.java @@ -0,0 +1,9 @@ +package com.eactive.apim.portal.djb.apistatus.incident.entity; + +public enum IncidentState { + INVESTIGATING, + IDENTIFIED, + MONITORING, + RESOLVED, + CANCELED +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java new file mode 100644 index 0000000..ef65543 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.djb.apistatus.incident.repository; + +import com.eactive.apim.portal.djb.apistatus.incident.entity.DjbApistatusIncidentApi; +import com.eactive.apim.portal.djb.apistatus.incident.entity.DjbApistatusIncidentApiId; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@EMSDataSource +public interface DjbApistatusIncidentApiRepository + extends JpaRepository { + + List findByIncidentIdOrderByApiId(Long incidentId); + + void deleteByIncidentId(Long incidentId); +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java new file mode 100644 index 0000000..0e15ec7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.djb.apistatus.incident.repository; + +import com.eactive.apim.portal.djb.apistatus.incident.entity.DjbApistatusIncident; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +@EMSDataSource +public interface DjbApistatusIncidentRepository + extends JpaRepository, JpaSpecificationExecutor { + + Optional findByNoticeId(String noticeId); +} diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java new file mode 100644 index 0000000..ca8dbe4 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.djb.apistatus.incident.repository; + +import com.eactive.apim.portal.djb.apistatus.incident.entity.DjbApistatusIncidentTimeline; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@EMSDataSource +public interface DjbApistatusIncidentTimelineRepository + extends JpaRepository { + + List findByIncidentIdOrderByEventAtAsc(Long incidentId); + + void deleteByIncidentId(Long incidentId); +}