From 0c6a61219a0cd9b2e31dd9eea8afeb780c837ea1 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 17 Aug 2026 15:28:24 -0400 Subject: [PATCH] Add match cycle DTOs with derived counts and isDraft --- .../dto/cycle/CreateMatchCycleRequest.java | 6 +++ .../dto/cycle/MatchCycleDetailQuery.java | 3 ++ .../match/dto/cycle/MatchCycleListQuery.java | 5 +++ .../match/dto/cycle/MatchCycleResponse.java | 45 +++++++++++++++++++ .../dto/cycle/UpdateMatchCycleRequest.java | 5 +++ 5 files changed, 64 insertions(+) create mode 100644 src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/CreateMatchCycleRequest.java create mode 100644 src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleDetailQuery.java create mode 100644 src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleListQuery.java create mode 100644 src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleResponse.java create mode 100644 src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/UpdateMatchCycleRequest.java diff --git a/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/CreateMatchCycleRequest.java b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/CreateMatchCycleRequest.java new file mode 100644 index 0000000..1b675cc --- /dev/null +++ b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/CreateMatchCycleRequest.java @@ -0,0 +1,6 @@ +package org.patinanetwork.patchats.api.match.dto.cycle; + +import jakarta.validation.constraints.NotNull; +import java.time.Instant; + +public record CreateMatchCycleRequest(@NotNull Instant runAt, String period) {} diff --git a/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleDetailQuery.java b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleDetailQuery.java new file mode 100644 index 0000000..b9a1b4b --- /dev/null +++ b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleDetailQuery.java @@ -0,0 +1,3 @@ +package org.patinanetwork.patchats.api.match.dto.cycle; + +public record MatchCycleDetailQuery(String memberIndustry, String status) {} diff --git a/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleListQuery.java b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleListQuery.java new file mode 100644 index 0000000..a066296 --- /dev/null +++ b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleListQuery.java @@ -0,0 +1,5 @@ +package org.patinanetwork.patchats.api.match.dto.cycle; + +import java.time.Instant; + +public record MatchCycleListQuery(String period, Instant startTime, Instant endTime) {} diff --git a/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleResponse.java b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleResponse.java new file mode 100644 index 0000000..8809368 --- /dev/null +++ b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/MatchCycleResponse.java @@ -0,0 +1,45 @@ +package org.patinanetwork.patchats.api.match.dto.cycle; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.Instant; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; +import org.patinanetwork.patchats.api.match.db.models.MatchCycle; + +@Getter +@Builder +@ToString +@EqualsAndHashCode +public class MatchCycleResponse { + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private final Integer matchCycleId; + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED, nullable = true) + private final String period; + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private final Instant runAt; + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private final boolean isDraft; + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private final Integer totalMembers; + + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private final Integer totalMatched; + + public static MatchCycleResponse from(final MatchCycle cycle) { + return MatchCycleResponse.builder() + .matchCycleId(cycle.getId()) + .period(cycle.getPeriod()) + .runAt(cycle.getRunAt()) + .isDraft(cycle.isDraft()) + .totalMembers(cycle.getTotalMembers()) + .totalMatched(cycle.getTotalMatched()) + .build(); + } +} diff --git a/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/UpdateMatchCycleRequest.java b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/UpdateMatchCycleRequest.java new file mode 100644 index 0000000..12289e6 --- /dev/null +++ b/src/main/java/org/patinanetwork/patchats/api/match/dto/cycle/UpdateMatchCycleRequest.java @@ -0,0 +1,5 @@ +package org.patinanetwork.patchats.api.match.dto.cycle; + +import java.time.Instant; + +public record UpdateMatchCycleRequest(Instant runAt, String period, Boolean isDraft) {}