[인프런 워밍업 클럽] BE 0기 과제 #4 과일가게API

문제1.

과일의 정보를 입력하기 위해 데이터베이스와 테이블을 만들어주었다.

image

그 후 요청한 과일 정보를 저장하기 위한 FruitSaveRequest클래스를 만들어준다.

package com.group.libraryapp.dto.fruit.request;

import java.time.LocalDate;

public class FruitSaveRequest {
    private String name;
    private LocalDate warehousingDate;
    private long price;

    public String getName() {
        return name;
    }

    public LocalDate getWarehousingDate() {
        return warehousingDate;
    }

    public long getPrice() {
        return price;
    }
}

image

  • API가 담긴 FruitController의 POSTAPI

     

    image

  • 실행 결과



    문제 2.

    판매한 과일을 기록하기 위하여 id를 사용했다.

@PutMapping("/api/v1/fruit")
    public void recordFruit(@RequestBody FruitSoldRequest request) {
        String readSql = "SELECT * FROM fruit WHERE id = ?";
        boolean isFruitNoException = jdbcTemplate.query(readSql, (rs, rowNum) -> 0, request.getId()).isEmpty();
        if (isFruitNoException) {
            throw new IllegalArgumentException();
        }
        String sql = "UPDATE fruit SET sold = 1 WHERE id = ?";
        jdbcTemplate.update(sql, request.getId());
    }
  • FruitController의 PUT API

여기서 FruitSoldRequest는 id만을 가진 클래스이다.
image

  • 실행 결과

문제 3.

@GetMapping("/api/v1/fruit/stat")
    public FruitResponse getPrice(@RequestParam String name){
        String readSql = "SELECT * FROM fruit WHERE name = ?";
        boolean isFruitNoException = jdbcTemplate.query(readSql, (rs, rowNum) -> 0, name).isEmpty();
        if (isFruitNoException) {
            throw new IllegalArgumentException();
        }
        String sql = "SELECT sum(price) FROM fruit WHERE name = ? GROUP BY sold";
        List<Long> priceSum = jdbcTemplate.query(sql, (rs, rowNum) -> {
            long sum = rs.getLong("sum(price)");
            return sum;
        }, name);
        return new FruitResponse(priceSum.get(0),priceSum.get(1));
    }
  • Sum과 Group by를 포함한 클래스

 

image

  • 실행 결과

댓글을 작성해보세요.

채널톡 아이콘