diff --git a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex01Controller.java b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex01Controller.java similarity index 64% rename from library-app/src/main/java/com/group/libarayapp/controller/task/Ex01Controller.java rename to library-app/src/main/java/com/group/libarayapp/controller/task02/Ex01Controller.java index c850af4..c45466f 100644 --- a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex01Controller.java +++ b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex01Controller.java @@ -1,7 +1,7 @@ -package com.group.libarayapp.controller.task; +package com.group.libarayapp.controller.task02; -import com.group.libarayapp.dto.task.request.Ex01Request; -import com.group.libarayapp.dto.task.response.Ex01Response; +import com.group.libarayapp.dto.task02.request.Ex01Request; +import com.group.libarayapp.dto.task02.response.Ex01Response; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex02Controller.java b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex02Controller.java similarity index 65% rename from library-app/src/main/java/com/group/libarayapp/controller/task/Ex02Controller.java rename to library-app/src/main/java/com/group/libarayapp/controller/task02/Ex02Controller.java index a6a1b24..453b6d0 100644 --- a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex02Controller.java +++ b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex02Controller.java @@ -1,7 +1,7 @@ -package com.group.libarayapp.controller.task; +package com.group.libarayapp.controller.task02; -import com.group.libarayapp.dto.task.request.Ex02Request; -import com.group.libarayapp.dto.task.response.Ex02Response; +import com.group.libarayapp.dto.task02.request.Ex02Request; +import com.group.libarayapp.dto.task02.response.Ex02Response; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex03Controller.java b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex03Controller.java similarity index 72% rename from library-app/src/main/java/com/group/libarayapp/controller/task/Ex03Controller.java rename to library-app/src/main/java/com/group/libarayapp/controller/task02/Ex03Controller.java index 0559e66..0bc7b46 100644 --- a/library-app/src/main/java/com/group/libarayapp/controller/task/Ex03Controller.java +++ b/library-app/src/main/java/com/group/libarayapp/controller/task02/Ex03Controller.java @@ -1,8 +1,8 @@ -package com.group.libarayapp.controller.task; +package com.group.libarayapp.controller.task02; -import com.group.libarayapp.dto.task.request.Ex03Request; -import com.group.libarayapp.dto.task.response.Ex03Response; +import com.group.libarayapp.dto.task02.request.Ex03Request; +import com.group.libarayapp.dto.task02.response.Ex03Response; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; diff --git a/library-app/src/main/java/com/group/libarayapp/controller/task04/Task04ExController.java b/library-app/src/main/java/com/group/libarayapp/controller/task04/Task04ExController.java new file mode 100644 index 0000000..73ee84f --- /dev/null +++ b/library-app/src/main/java/com/group/libarayapp/controller/task04/Task04ExController.java @@ -0,0 +1,62 @@ +package com.group.libarayapp.controller.task04; + +import com.group.libarayapp.dto.task04.request.Task04CreateRequest; +import com.group.libarayapp.dto.task04.request.Task04ExRequest; +import com.group.libarayapp.dto.task04.response.Task04ExResponse; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@RestController +public class Task04ExController { + + private final JdbcTemplate jdbcTemplate; + + public Task04ExController(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + // 문제 1 + @PostMapping("/api/v1/fruit") + public void saveFruit(@RequestBody Task04ExRequest request) { + String sql = "insert into fruit(name, warehousing, price) values(?, ?, ?)"; + jdbcTemplate.update(sql, request.getName(), request.getWarehousingDate(), request.getPrice()); + } + + + // 문제 2 + @PutMapping("/api/v1/fruit") + public void salesQuantityFruit(@RequestBody Task04ExRequest request) { + String readSql = "select * from fruit where id=?"; + boolean isSalesFruit = jdbcTemplate.query(readSql, (rs, rowNum) -> 0, request.getId()).isEmpty(); + if (isSalesFruit) { + throw new IllegalArgumentException(); + } + String sql = "update fruit set salesQuantity=? where id=?"; + jdbcTemplate.update(sql, request.getSalesQuantity() + 1, request.getId()); + } + + // 문제 3 - sum, group by 미적용 + @GetMapping("/api/v1/fruit/stat") + public Task04ExResponse SalesAmountFruit(@RequestParam String name) { + String readNotSalesSql = """ + select sum(price) as notSalesAmount + from fruit + where name=? and salesQuantity = 0 + group by salesQuantity; + """; + List readNotSalesList = jdbcTemplate.query(readNotSalesSql, (rs, rowNum) -> rs.getInt("notSalesAmount"), name); + + String readSalesSql = """ + select sum(price) as salesAmount + from fruit + where name=? and salesQuantity = 1 + group by salesQuantity; + """; + List readSalesList = jdbcTemplate.query(readSalesSql, (rs, rowNum) -> rs.getInt("salesAmount"), name); + + return new Task04ExResponse(readSalesList, readNotSalesList); + } +} diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex01Request.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex01Request.java similarity index 85% rename from library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex01Request.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex01Request.java index 01c21bb..4e1d2a7 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex01Request.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex01Request.java @@ -1,4 +1,4 @@ -package com.group.libarayapp.dto.task.request; +package com.group.libarayapp.dto.task02.request; public class Ex01Request { private final int num1; diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex02Request.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex02Request.java similarity index 82% rename from library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex02Request.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex02Request.java index a701ae1..cc89baf 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex02Request.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex02Request.java @@ -1,4 +1,4 @@ -package com.group.libarayapp.dto.task.request; +package com.group.libarayapp.dto.task02.request; import java.time.LocalDate; diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex03Request.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex03Request.java similarity index 81% rename from library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex03Request.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex03Request.java index d1fa15a..5f4b6b1 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/request/Ex03Request.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/request/Ex03Request.java @@ -1,4 +1,4 @@ -package com.group.libarayapp.dto.task.request; +package com.group.libarayapp.dto.task02.request; import java.util.ArrayList; import java.util.List; diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex01Response.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex01Response.java similarity index 83% rename from library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex01Response.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex01Response.java index 2acd31e..b3518c4 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex01Response.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex01Response.java @@ -1,6 +1,6 @@ -package com.group.libarayapp.dto.task.response; +package com.group.libarayapp.dto.task02.response; -import com.group.libarayapp.dto.task.request.Ex01Request; +import com.group.libarayapp.dto.task02.request.Ex01Request; public class Ex01Response { diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex02Response.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex02Response.java similarity index 77% rename from library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex02Response.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex02Response.java index c97f8c9..bb585b3 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex02Response.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex02Response.java @@ -1,6 +1,6 @@ -package com.group.libarayapp.dto.task.response; +package com.group.libarayapp.dto.task02.response; -import com.group.libarayapp.dto.task.request.Ex02Request; +import com.group.libarayapp.dto.task02.request.Ex02Request; import java.time.format.TextStyle; import java.util.Locale; diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex03Response.java b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex03Response.java similarity index 83% rename from library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex03Response.java rename to library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex03Response.java index a928914..ad3ca95 100644 --- a/library-app/src/main/java/com/group/libarayapp/dto/task/response/Ex03Response.java +++ b/library-app/src/main/java/com/group/libarayapp/dto/task02/response/Ex03Response.java @@ -1,4 +1,4 @@ -package com.group.libarayapp.dto.task.response; +package com.group.libarayapp.dto.task02.response; import java.util.List; diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04CreateRequest.java b/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04CreateRequest.java new file mode 100644 index 0000000..218e1b1 --- /dev/null +++ b/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04CreateRequest.java @@ -0,0 +1,40 @@ +package com.group.libarayapp.dto.task04.request; + +import java.time.LocalDate; + +public class Task04CreateRequest { + + Long id; + String name; + LocalDate warehousing; + Long price; + int salesQuantity; + + public Task04CreateRequest(Long id, String name, LocalDate warehousing, Long price, int salesQuantity) { + this.id = id; + this.name = name; + this.warehousing = warehousing; + this.price = price; + this.salesQuantity = salesQuantity; + } + + public String getName() { + return name; + } + + public Long getId() { + return id; + } + + public LocalDate getWarehousing() { + return warehousing; + } + + public Long getPrice() { + return price; + } + + public int getSalesQuantity() { + return salesQuantity; + } +} diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04ExRequest.java b/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04ExRequest.java new file mode 100644 index 0000000..d825968 --- /dev/null +++ b/library-app/src/main/java/com/group/libarayapp/dto/task04/request/Task04ExRequest.java @@ -0,0 +1,39 @@ +package com.group.libarayapp.dto.task04.request; + +import java.time.LocalDate; + +public class Task04ExRequest { + + private Long id; + private String name; + private LocalDate warehousingDate; + + private int salesQuantity; + private Long price; + + public Task04ExRequest(String name, LocalDate warehousingDate, Long price) { + this.name = name; + this.warehousingDate = warehousingDate; + this.price = price; + } + + public String getName() { + return name; + } + + public LocalDate getWarehousingDate() { + return warehousingDate; + } + + public Long getPrice() { + return price; + } + + public Long getId() { + return id; + } + + public int getSalesQuantity() { + return salesQuantity; + } +} diff --git a/library-app/src/main/java/com/group/libarayapp/dto/task04/response/Task04ExResponse.java b/library-app/src/main/java/com/group/libarayapp/dto/task04/response/Task04ExResponse.java new file mode 100644 index 0000000..a25cbf7 --- /dev/null +++ b/library-app/src/main/java/com/group/libarayapp/dto/task04/response/Task04ExResponse.java @@ -0,0 +1,21 @@ +package com.group.libarayapp.dto.task04.response; + +import java.util.List; + +public class Task04ExResponse { + private final long salesAmount; + private final long notSalesAmount; + + public Task04ExResponse(List readSalesList, List readNotSalesList) { + this.salesAmount = readSalesList.get(0); + this.notSalesAmount = readNotSalesList.get(0); + } + + public long getSalesAmount() { + return salesAmount; + } + + public long getNotSalesAmount() { + return notSalesAmount; + } +}