From 48596e40973fd7a3991e35394790a58173920a03 Mon Sep 17 00:00:00 2001 From: qjvk2880 Date: Sat, 22 Jun 2024 15:22:29 +0900 Subject: [PATCH 1/5] =?UTF-8?q?M3-117=20Feat=20:=20=EA=B0=9C=EC=9D=B8?= =?UTF-8?q?=EC=A0=84=20=ED=94=BD=EC=85=80=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EB=8A=94=20api=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../groundflip/controller/PixelController.java | 2 +- .../dto/pixel/IndividualPixelResponse.java | 1 + .../m3pro/groundflip/domain/entity/Pixel.java | 3 ++- .../groundflip/repository/PixelRepository.java | 18 +++++++++++++++++- .../m3pro/groundflip/service/PixelService.java | 2 +- 5 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java diff --git a/src/main/java/com/m3pro/groundflip/controller/PixelController.java b/src/main/java/com/m3pro/groundflip/controller/PixelController.java index 243f8b94..0ffcd74d 100644 --- a/src/main/java/com/m3pro/groundflip/controller/PixelController.java +++ b/src/main/java/com/m3pro/groundflip/controller/PixelController.java @@ -1 +1 @@ -package com.m3pro.groundflip.controller; import org.springframework.web.bind.annotation.RestController; import com.m3pro.groundflip.service.PixelService; import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor public class PixelController { private final PixelService pixelService; } \ No newline at end of file +package com.m3pro.groundflip.controller; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.m3pro.groundflip.domain.dto.Response; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.service.PixelService; import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor @RequestMapping("/api/pixels") public class PixelController { private final PixelService pixelService; @GetMapping("") public Response> getNearIndividualPixels( @RequestParam(name = "current-x") int currentX, @RequestParam(name = "current-y") int currentY, @RequestParam(name = "x-range") int xRange, @RequestParam(name = "y-range") int yRange) { return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange)); } } \ No newline at end of file diff --git a/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java b/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java new file mode 100644 index 00000000..b3246242 --- /dev/null +++ b/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java @@ -0,0 +1 @@ +package com.m3pro.groundflip.domain.dto.pixel; import com.m3pro.groundflip.domain.entity.Pixel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Data public class IndividualPixelResponse { private double latitude; private double longitude; private double x; private double y; public static IndividualPixelResponse from(Pixel pixel) { return new IndividualPixelResponse(pixel.getLatitude(), pixel.getLongitude(), pixel.getX(), pixel.getY()); } } \ No newline at end of file diff --git a/src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java b/src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java index 39e155fe..97c36242 100644 --- a/src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java +++ b/src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java @@ -8,6 +8,7 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; @@ -19,7 +20,7 @@ @Getter @Entity -@Table(name = "pixel") +@Table(name = "pixel", indexes = @Index(name = "index__x__y", columnList = "x, y")) @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Builder diff --git a/src/main/java/com/m3pro/groundflip/repository/PixelRepository.java b/src/main/java/com/m3pro/groundflip/repository/PixelRepository.java index 3f1a5fcf..76a849c5 100644 --- a/src/main/java/com/m3pro/groundflip/repository/PixelRepository.java +++ b/src/main/java/com/m3pro/groundflip/repository/PixelRepository.java @@ -1 +1,17 @@ -package com.m3pro.groundflip.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.m3pro.groundflip.domain.entity.Pixel; public interface PixelRepository extends JpaRepository { } \ No newline at end of file +package com.m3pro.groundflip.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import com.m3pro.groundflip.domain.entity.Pixel; + +public interface PixelRepository extends JpaRepository { + @Query(value = "select pixel from Pixel pixel " + + "where pixel.x between :currentX - :xRange / 2 and :currentX + :xRange / 2 " + + "and pixel.y between :currentY - :yRange / 2 and :currentY + :yRange / 2 ") + List findAllNearPixels(@Param("currentX") int currentX, @Param("currentY") int currentY, + @Param("xRange") int xRange, @Param("yRange") int yRange); +} diff --git a/src/main/java/com/m3pro/groundflip/service/PixelService.java b/src/main/java/com/m3pro/groundflip/service/PixelService.java index f219f949..ffbb80f5 100644 --- a/src/main/java/com/m3pro/groundflip/service/PixelService.java +++ b/src/main/java/com/m3pro/groundflip/service/PixelService.java @@ -1 +1 @@ -package com.m3pro.groundflip.service; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor public class PixelService { } \ No newline at end of file +package com.m3pro.groundflip.service; import java.util.List; import org.springframework.stereotype.Service; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.repository.PixelRepository; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor public class PixelService { private final PixelRepository pixelRepository; public List getNearIndividualPixels(int currentX, int currentY, int xRange, int yRange) { return pixelRepository.findAllNearPixels(currentX, currentY, xRange, yRange) .stream() .map(IndividualPixelResponse::from) .toList(); } } \ No newline at end of file From f4844c4981a19ecaf36ddf8c45be3cc703f28588 Mon Sep 17 00:00:00 2001 From: qjvk2880 Date: Sat, 22 Jun 2024 17:36:28 +0900 Subject: [PATCH 2/5] =?UTF-8?q?M3-117=20Feat=20:=20getNearIndividualPixels?= =?UTF-8?q?()=EC=9D=98=20=EC=9D=B8=EC=9E=90=20=EC=9D=BC=EB=B6=80=EB=A5=BC?= =?UTF-8?q?=20=EC=84=A0=ED=83=9D=20=EA=B0=80=EB=8A=A5=ED=95=98=EA=B2=8C?= =?UTF-8?q?=EB=81=94=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/m3pro/groundflip/controller/PixelController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/m3pro/groundflip/controller/PixelController.java b/src/main/java/com/m3pro/groundflip/controller/PixelController.java index 0ffcd74d..3f8ead7d 100644 --- a/src/main/java/com/m3pro/groundflip/controller/PixelController.java +++ b/src/main/java/com/m3pro/groundflip/controller/PixelController.java @@ -1 +1 @@ -package com.m3pro.groundflip.controller; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.m3pro.groundflip.domain.dto.Response; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.service.PixelService; import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor @RequestMapping("/api/pixels") public class PixelController { private final PixelService pixelService; @GetMapping("") public Response> getNearIndividualPixels( @RequestParam(name = "current-x") int currentX, @RequestParam(name = "current-y") int currentY, @RequestParam(name = "x-range") int xRange, @RequestParam(name = "y-range") int yRange) { return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange)); } } \ No newline at end of file +package com.m3pro.groundflip.controller; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.m3pro.groundflip.domain.dto.Response; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.service.PixelService; import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor @RequestMapping("/api/pixels") public class PixelController { private final PixelService pixelService; @GetMapping("") public Response> getNearIndividualPixels( @RequestParam(name = "current-x") int currentX, @RequestParam(name = "current-y") int currentY, @RequestParam(name = "x-range", required = false, defaultValue = "20") int xRange, @RequestParam(name = "y-range", required = false, defaultValue = "10") int yRange) { return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange)); } } \ No newline at end of file From 631c6531a9abfc58a22892d400e060b1d6a26d08 Mon Sep 17 00:00:00 2001 From: qjvk2880 Date: Sat, 22 Jun 2024 17:47:49 +0900 Subject: [PATCH 3/5] =?UTF-8?q?M3-117=20Style=20:=20=EA=B0=9C=ED=96=89?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=EB=A5=BC=20LF=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PixelController.java | 32 ++++++++++++++++++- .../dto/pixel/IndividualPixelResponse.java | 22 ++++++++++++- .../groundflip/service/PixelService.java | 24 +++++++++++++- 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/m3pro/groundflip/controller/PixelController.java b/src/main/java/com/m3pro/groundflip/controller/PixelController.java index 3f8ead7d..caef0746 100644 --- a/src/main/java/com/m3pro/groundflip/controller/PixelController.java +++ b/src/main/java/com/m3pro/groundflip/controller/PixelController.java @@ -1 +1,31 @@ -package com.m3pro.groundflip.controller; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.m3pro.groundflip.domain.dto.Response; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.service.PixelService; import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor @RequestMapping("/api/pixels") public class PixelController { private final PixelService pixelService; @GetMapping("") public Response> getNearIndividualPixels( @RequestParam(name = "current-x") int currentX, @RequestParam(name = "current-y") int currentY, @RequestParam(name = "x-range", required = false, defaultValue = "20") int xRange, @RequestParam(name = "y-range", required = false, defaultValue = "10") int yRange) { return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange)); } } \ No newline at end of file +package com.m3pro.groundflip.controller; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.m3pro.groundflip.domain.dto.Response; +import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; +import com.m3pro.groundflip.service.PixelService; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pixels") +public class PixelController { + private final PixelService pixelService; + + @GetMapping("") + public Response> getNearIndividualPixels( + @RequestParam(name = "current-x") int currentX, + @RequestParam(name = "current-y") int currentY, + @RequestParam(name = "x-range", required = false, defaultValue = "20") int xRange, + @RequestParam(name = "y-range", required = false, defaultValue = "10") int yRange) { + return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange)); + } + +} diff --git a/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java b/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java index b3246242..d911b884 100644 --- a/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java +++ b/src/main/java/com/m3pro/groundflip/domain/dto/pixel/IndividualPixelResponse.java @@ -1 +1,21 @@ -package com.m3pro.groundflip.domain.dto.pixel; import com.m3pro.groundflip.domain.entity.Pixel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Data public class IndividualPixelResponse { private double latitude; private double longitude; private double x; private double y; public static IndividualPixelResponse from(Pixel pixel) { return new IndividualPixelResponse(pixel.getLatitude(), pixel.getLongitude(), pixel.getX(), pixel.getY()); } } \ No newline at end of file +package com.m3pro.groundflip.domain.dto.pixel; + +import com.m3pro.groundflip.domain.entity.Pixel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +public class IndividualPixelResponse { + private double latitude; + private double longitude; + private double x; + private double y; + + public static IndividualPixelResponse from(Pixel pixel) { + return new IndividualPixelResponse(pixel.getLatitude(), pixel.getLongitude(), pixel.getX(), pixel.getY()); + } +} diff --git a/src/main/java/com/m3pro/groundflip/service/PixelService.java b/src/main/java/com/m3pro/groundflip/service/PixelService.java index ffbb80f5..5305a8b8 100644 --- a/src/main/java/com/m3pro/groundflip/service/PixelService.java +++ b/src/main/java/com/m3pro/groundflip/service/PixelService.java @@ -1 +1,23 @@ -package com.m3pro.groundflip.service; import java.util.List; import org.springframework.stereotype.Service; import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; import com.m3pro.groundflip.repository.PixelRepository; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor public class PixelService { private final PixelRepository pixelRepository; public List getNearIndividualPixels(int currentX, int currentY, int xRange, int yRange) { return pixelRepository.findAllNearPixels(currentX, currentY, xRange, yRange) .stream() .map(IndividualPixelResponse::from) .toList(); } } \ No newline at end of file +package com.m3pro.groundflip.service; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse; +import com.m3pro.groundflip.repository.PixelRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class PixelService { + private final PixelRepository pixelRepository; + + public List getNearIndividualPixels(int currentX, int currentY, int xRange, int yRange) { + return pixelRepository.findAllNearPixels(currentX, currentY, xRange, yRange) + .stream() + .map(IndividualPixelResponse::from) + .toList(); + } +} From 97c24563613b0036dc652fec237ced386908f7ef Mon Sep 17 00:00:00 2001 From: qjvk2880 Date: Sat, 22 Jun 2024 17:48:57 +0900 Subject: [PATCH 4/5] =?UTF-8?q?M3-117=20Rename=20:=20PR=20=ED=85=9C?= =?UTF-8?q?=ED=94=8C=EB=A6=BF=20=ED=8C=8C=EC=9D=BC=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/{PULL_REQUEST.md => PULL_REQUEST_TEMPLATE.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{PULL_REQUEST.md => PULL_REQUEST_TEMPLATE.md} (100%) diff --git a/.github/PULL_REQUEST.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from .github/PULL_REQUEST.md rename to .github/PULL_REQUEST_TEMPLATE.md From c077787b3de0a45d9baa9dddf1bb0e9ad217b719 Mon Sep 17 00:00:00 2001 From: qjvk2880 Date: Sat, 22 Jun 2024 19:15:49 +0900 Subject: [PATCH 5/5] =?UTF-8?q?M3-117=20Refactor=20:=20getNearIndividualPi?= =?UTF-8?q?xels()=EC=97=90=20/individual=20=EA=B5=AC=EB=B6=84=EC=9E=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/m3pro/groundflip/controller/PixelController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/m3pro/groundflip/controller/PixelController.java b/src/main/java/com/m3pro/groundflip/controller/PixelController.java index caef0746..5e6fe8ba 100644 --- a/src/main/java/com/m3pro/groundflip/controller/PixelController.java +++ b/src/main/java/com/m3pro/groundflip/controller/PixelController.java @@ -19,7 +19,7 @@ public class PixelController { private final PixelService pixelService; - @GetMapping("") + @GetMapping("/individual") public Response> getNearIndividualPixels( @RequestParam(name = "current-x") int currentX, @RequestParam(name = "current-y") int currentY,