diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedEntity.java new file mode 100644 index 0000000000..c67ef58f79 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedEntity.java @@ -0,0 +1,39 @@ +package uk.gov.hmcts.ccd.data.caseclosed; + +import lombok.Data; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Data +@Table(name = "date_case_closed") +public class DateCaseClosedEntity { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "date_case_closed_id_seq_generator") + @SequenceGenerator( + name = "date_case_closed_id_seq_generator", + sequenceName = "date_case_closed_id_seq", + allocationSize = 1 + ) + private Long id; + + @Column(name = "ccd_case_number", nullable = false) + private Long ccdCaseNumber; + + @Column(name = "state") + private String state; + + @Column(name = "state_category") + private String stateCategory; + + @Column(name = "state_changed_date") + private LocalDateTime stateChangedDate; +} diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedRepository.java new file mode 100644 index 0000000000..55a5908176 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/ccd/data/caseclosed/DateCaseClosedRepository.java @@ -0,0 +1,13 @@ +package uk.gov.hmcts.ccd.data.caseclosed; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface DateCaseClosedRepository extends CrudRepository { + + List findByStateChangedDateLessThanEqual(LocalDateTime stateChangedDate); +} diff --git a/src/main/resources/db/migration/V20250508_943__CME-943_add_date_case_closed_table.sql b/src/main/resources/db/migration/V20250508_943__CME-943_add_date_case_closed_table.sql new file mode 100644 index 0000000000..5f0f209fdd --- /dev/null +++ b/src/main/resources/db/migration/V20250508_943__CME-943_add_date_case_closed_table.sql @@ -0,0 +1,27 @@ +CREATE TABLE public.date_case_closed ( + id bigint NOT NULL, + ccd_case_number bigint NOT NULL, + state character varying(255), + state_category character varying(500), + state_changed_date timestamp, + PRIMARY KEY(id) +); + +CREATE SEQUENCE public.date_case_closed_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.date_case_closed_id_seq OWNED BY public.date_case_closed.id; + +ALTER TABLE ONLY public.date_case_closed + ALTER COLUMN id SET DEFAULT nextval('public.date_case_closed_id_seq'::regclass); + +ALTER TABLE public.date_case_closed + ADD CONSTRAINT fk_date_case_closed_ccd_case_number_case_data + FOREIGN KEY (ccd_case_number) REFERENCES public.case_data(reference); + +CREATE INDEX idx_date_case_closed_state_changed_date + ON public.date_case_closed (state_changed_date);