diff --git a/src/main/java/Capstone/AutoScheduler/global/config/SecurityConfig.java b/src/main/java/Capstone/AutoScheduler/global/config/SecurityConfig.java index 3e013ae..1814c8e 100644 --- a/src/main/java/Capstone/AutoScheduler/global/config/SecurityConfig.java +++ b/src/main/java/Capstone/AutoScheduler/global/config/SecurityConfig.java @@ -27,7 +27,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti // Event 관련 접근 .requestMatchers("/event/", "/event/{eventId}", "/event/member/{memberId}", "/event/member/{memberId}/event/{eventId}", "/event/member/{memberId}/date/{date}").permitAll() // Generator 관련 접근 - .requestMatchers("/generator/").permitAll() + .requestMatchers("/generator/", "/generator/{generatorId}").permitAll() // Bookmark 관련 접근 .requestMatchers("/bookmark/add/{memberId}/{generatorId}", "/bookmark/delete/{bookmarkId}" ).permitAll() // Crawling 관련 접근 diff --git a/src/main/java/Capstone/AutoScheduler/global/converter/GeneratorConverter.java b/src/main/java/Capstone/AutoScheduler/global/converter/GeneratorConverter.java index 75ef986..2c13f98 100644 --- a/src/main/java/Capstone/AutoScheduler/global/converter/GeneratorConverter.java +++ b/src/main/java/Capstone/AutoScheduler/global/converter/GeneratorConverter.java @@ -4,6 +4,10 @@ import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorRequestDTO; import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorResponseDTO; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + public class GeneratorConverter { public static Generator toGenerator(GeneratorRequestDTO.CreateGeneratorRequestDTO request) { @@ -23,4 +27,33 @@ public static GeneratorResponseDTO.CreateGeneratorResultDTO toCreateResultDTO(Ge .build(); } + public static GeneratorResponseDTO.GeneratorDTO toGeneratorDTO(Generator generator) { + return GeneratorResponseDTO.GeneratorDTO.builder() + .generatorId(generator.getGeneratorId()) + .memberId(generator.getMember().getMemberId()) + .sourceId(generator.getSource().getSourceId()) + .generatorTitle(generator.getGeneratorTitle()) + .generatorDetail(generator.getGeneratorDetail()) + .build(); + } + + public static GeneratorResponseDTO.GeneratorPreviewDTO toGeneratorPreviewDTO(Generator generator) { + return GeneratorResponseDTO.GeneratorPreviewDTO.builder() + .generatorId(generator.getGeneratorId()) + .memberId(generator.getMember().getMemberId()) + .sourceId(generator.getSource().getSourceId()) + .generatorTitle(generator.getGeneratorTitle()) + .generatorDetail(generator.getGeneratorDetail()) + .build(); + } + + public static GeneratorResponseDTO.GeneratorPreviewListDTO toGeneratorPreviewListDTO(List generatorList) { + List generatorPreviewDTOList = IntStream.range(0, generatorList.size()) + .mapToObj(i->toGeneratorPreviewDTO(generatorList.get(i))) + .collect(Collectors.toList()); + return GeneratorResponseDTO.GeneratorPreviewListDTO.builder() + .generators(generatorPreviewDTOList) + .build(); + } + } diff --git a/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java b/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java index 19592b1..e46a88c 100644 --- a/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java +++ b/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java @@ -4,8 +4,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface GeneratorRepository extends JpaRepository { - + List findAllByOrderByGeneratorIdDesc(); } diff --git a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java index 113ce1f..ebf7f8f 100644 --- a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java +++ b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java @@ -1,4 +1,11 @@ package Capstone.AutoScheduler.global.service.GeneratorService; +import Capstone.AutoScheduler.global.domain.entity.Generator; + +import java.util.List; + public interface GeneratorQueryService { + + Generator findById(Long generatorId); + List getGenerators(); } diff --git a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java index 493ea47..a433ddb 100644 --- a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java +++ b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java @@ -1,4 +1,33 @@ package Capstone.AutoScheduler.global.service.GeneratorService; -public class GeneratorQueryServiceImpl { + +import Capstone.AutoScheduler.global.domain.entity.Generator; +import Capstone.AutoScheduler.global.repository.GeneratorRepository; +import jakarta.transaction.Transactional; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +@Transactional +@Slf4j +@Getter +public class GeneratorQueryServiceImpl implements GeneratorQueryService { + + private final GeneratorRepository generatorRepository; + + @Override + public Generator findById(Long generatorId) { + Generator generator = generatorRepository.findById(generatorId).get(); + return generatorRepository.save(generator); + } + + @Override + public List getGenerators() { + return generatorRepository.findAllByOrderByGeneratorIdDesc(); + } } diff --git a/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java b/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java index bc5504c..487f067 100644 --- a/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java +++ b/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java @@ -6,16 +6,20 @@ import Capstone.AutoScheduler.global.converter.GeneratorConverter; import Capstone.AutoScheduler.global.domain.entity.Generator; import Capstone.AutoScheduler.global.service.GeneratorService.GeneratorCommandService; +import Capstone.AutoScheduler.global.service.GeneratorService.GeneratorQueryService; import Capstone.AutoScheduler.global.service.MemberService.MemberCommandService; import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorRequestDTO; import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @Validated @@ -26,6 +30,7 @@ public class GeneratorController { private final GeneratorCommandService generatorCommandService; + private final GeneratorQueryService generatorQueryService; private final MemberCommandService memberCommandService; // 일정 생성기 저장하기 @@ -43,4 +48,26 @@ public ApiResponse generatorCreat ); } + // 특정 일정 생성기 조회 + @GetMapping("/{generatorId}") + @Operation(summary = "특정 일정 생성기 조회 API", description = "특정 일정 생성기를 조회합니다. Path variable로 조회할 일정 생성기의 ID를 입력하세요.") + public ApiResponse findGenerator(@PathVariable Long generatorId) { + Object request; + Generator findGenerator = generatorQueryService.findById(generatorId); + return ApiResponse.onSuccess( + SuccessStatus.GENERATOR_OK, + GeneratorConverter.toGeneratorDTO(findGenerator) + ); + } + + // 전체 일정 생성기 리스트 조회 + @GetMapping("/list") + @Operation(summary = "전체 일정 생성기 리스트 조회 API", description = "전체 일정 생성기 리스트를 조회합니다.") + public ApiResponse findGenerators() { + List generators = generatorQueryService.getGenerators(); + return ApiResponse.onSuccess( + SuccessStatus.GENERATOR_OK, + GeneratorConverter.toGeneratorPreviewListDTO(generators)); + } + } diff --git a/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java b/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java index 85c82b1..63a1a39 100644 --- a/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java +++ b/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java @@ -5,6 +5,8 @@ import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.List; + public class GeneratorResponseDTO { @Getter @@ -18,4 +20,39 @@ public static class CreateGeneratorResultDTO { String generatorTitle; String generatorDetail; } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class GeneratorDTO { + Long generatorId; + Long memberId; + Long sourceId; + String generatorTitle; + String generatorDetail; + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class GeneratorPreviewDTO { + Long generatorId; + Long memberId; + Long sourceId; + String generatorTitle; + String generatorDetail; + } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class GeneratorPreviewListDTO { + List generators; + } + + + }