본문 바로가기

내일 배움 캠프

2023-12-07

오늘은 프로젝트 3일차이다. 오늘 한내용은 다음과 같다.

 

1.  프로젝트 종합테스트 

 

2. 가게 기능구현 추가

 

1. 오늘 오전중에 팀원분들이 작성한 코드를 모두 git에 merge하고 테스트를 위해 Postman 테스트를 만들었다.

아래의 이미지는 테스트를 위해 만든 Postman 테스트 목록이다. 아래의 과정을 통해 프로젝트 전반적인 테스트에서 주요 문제점 2개를 발견했다. 첫번째는 소지금 충전을 하고 주문을 하면 소지금을 보유하고 있는 유저의 소지금이 차감처리가 안됐고 2번째 문제는 댓글리뷰에서 생성할때 오더 주문처리가 되지 않은 상태에서 리뷰 생성이 가능했던 부분이다. 테스트 후에 모두 테스트를 바탕으로 오류를 수정하여 처음 기획했던 프로젝트를 마무리 했다. 

2.  1번에서 기존에 기획했던 프로젝트를 마무리를 하고 시간이 많이 남아서 추가적인 프로젝트 기능들을 구성했다. 추가적인 기능구성은 식당을 추가해서 키오스크에서 배달앱처럼 기능을 변경하기 위해 추가하기로 했다. 초기 세팅을 위해 data.sql파일을 수정했고 만든 sql 코드는 다음과 같다. 

CREATE TABLE IF NOT EXISTS restaurant(
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     restaurant_name VARCHAR(255),
     restaurant_number VARCHAR(255),
     restaurant_address VARCHAR(255),
     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO restaurant (restaurant_name, restaurant_number, restaurant_address, created_at, modified_at)
SELECT *, NOW(), NOW() FROM (
        SELECT '김밥천국' AS restaurant_name, '02-1234-5678' AS restaurant_number, '서울시 강남구' AS restaurant_address
        UNION ALL
        SELECT '야나두김밥', '02-9876-5432', '서울시 서초구'
        UNION ALL
        SELECT '어너두김밥', '02-1111-2222', '서울시 마포구'
    ) AS test
WHERE NOT EXISTS (
    SELECT 1 FROM restaurant
    WHERE restaurant.restaurant_name = test.restaurant_name
      AND restaurant.restaurant_number = test.restaurant_number
      AND restaurant.restaurant_address = test.restaurant_address
);

CREATE TABLE IF NOT EXISTS menu (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    category VARCHAR(255),
    name VARCHAR(255),
    price DOUBLE,
    restaurant_id BIGINT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (restaurant_id) REFERENCES restaurant(id)
);

INSERT INTO menu (category, name, price, restaurant_id, created_at, modified_at)
SELECT *, (SELECT id FROM restaurant WHERE restaurant_name = '김밥천국'), NOW(), NOW() FROM (
      SELECT '김밥' AS category, '김밥' AS name, 2.0 AS price UNION ALL
      SELECT '김밥', '야채김밥', 3.0 UNION ALL
      SELECT '김밥', '참치김밥', 3.0 UNION ALL
      SELECT '라면', '라면', 2.0 UNION ALL
      SELECT '라면', '참치라면', 2.0 UNION ALL
      SELECT '라면', '해물라면', 2.0 UNION ALL
      SELECT '라면', '해장라면', 2.0
  ) AS init
WHERE NOT EXISTS (
    SELECT 1 FROM menu
    WHERE menu.category = init.category
      AND menu.name = init.name
      AND menu.price = init.price
);

코드를 보면 식당테이블 생성후 각각의 가게를 넣어주고 그다음 메뉴를 생성할때 식당테이블의 1번레이어와 조인하여 1번식당의 메뉴로 넣어준다. 생성된 테이블은 아래와 같다. 

따라서 식당 생성에 따라서 기존에 있던 메뉴CRUD전부 수정과정을 진행했다. 기존에는 Menu_id를 통해 CRUD를 진행했다면 거기에 restaurant_id를 추가하여 함게 CRUD하는 구성으로 변경했다.

'내일 배움 캠프' 카테고리의 다른 글

2023-12-15  (0) 2023.12.15
2023-12-08  (0) 2023.12.09
2023-12-06  (1) 2023.12.06
2023-12-05  (2) 2023.12.06
2023-12-04  (3) 2023.12.04