Step3-kakao-tech-campus / Team3_BE

[카테캠 1기] 번개 지향 볼링 모집 커뮤니티 "번개볼링"의 백엔드 서버입니다.
2 stars 4 forks source link

프로필, 유저 기록, 참여 기록, 신청 여부 API 구현 #41

Closed xcelxlorx closed 11 months ago

xcelxlorx commented 11 months ago

Summary

위의 api를 구현했습니다.

Description

유저 기록 조회

참여 기록 조회

조건 파라미터가 많다 보니 보내야 하는 쿼리 종류가 30개 이상이라서 동적 쿼리를 사용했습니다. jpa specification로 구현했고 실무에서는 잘 사용하지 않는다고 합니다.

양방향을 사용하지 않고 자바 코드로 구현하려고 하다보니 <post.id, List> 형태의 map을 넘겨주게 되었습니다.

하다보니 코드 양이 길어졌습니닷.. 😓 잘못된 로직이 있다면 말씀해주세요.

대충 테스트 데이터 INSERT INTO user_tb (name, email, password, district_id, role) VALUES ('김볼링', 'test@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('볼링볼링', 'test1@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('박볼', 'test3@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링링', 'test4@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('볼링링', 'test5@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼', 'test6@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링륑', 'test7@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('주주', 'test8@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('son', 'test9@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼2', 'test10@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('볼링링1', 'test11@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('볼스', 'test12@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링2', 'test13@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링3', 'test14@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링4', 'test15@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링5', 'test16@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링6', 'test17@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링7', 'test18@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링8', 'test19@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링9', 'test20@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링10', 'test21@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링11', 'test22@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링12', 'test23@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링13', 'test24@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링14', 'test25@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'), ('김볼링링15', 'test26@test.com', '{bcrypt}$2a$10$yK46P9/7TyA2J4z69uEEhOdInb6a7lgHNWVfqftsQSwvLgwSZv9Mq', 1, 'ROLE_USER'); INSERT INTO post_tb (title, user_id, district_id, start_time, due_time, content, is_close) VALUES ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-09-08', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-09-08', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-08-05', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 2, 3, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 2, 4, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 2, 4, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 2, 4, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 2, 1, '2023-09-01', '2023-11-29', '볼링 점수 내기합시다.', false), ('불금 볼링 점수 내기 하실 분~', 3, 1, '2023-10-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 3, 1, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 3, 1, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 3, 1, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 3, 1, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 4, 469, '2023-10-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 4, 469, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 4, 469, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 4, 469, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true), ('불금 볼링 점수 내기 하실 분~', 1, 469, '2023-08-01', '2023-11-29', '볼링 점수 내기합시다.', true); INSERT INTO comment_tb (post_id, user_id, parent_id, content) VALUES (1, 2, null, '저 해도 되나요?'), (1, 1, 1, '신청해주세요~'); INSERT INTO applicant_tb (user_id, post_id, status) VALUES (1, 6, true), (1, 7, false), (1, 8, false), (1, 9, false), (1, 10, false), (1, 11, false), (1, 12, false), (1, 13, false), (1, 14, false), (1, 15, false), (1, 16, true), (1, 17, true), (1, 18, true), (1, 19, true), (2, 1, true), (3, 2, true), (4, 1, true), (5, 1, true), (11, 6, true), (7, 6, true), (8, 6, true), (9, 6, true), (10, 6, true); INSERT INTO score_tb (user_id, post_id, score) VALUES (1, 6, 100), (1, 1, 150), (1, 6, 45); INSERT INTO user_rate_tb(applicant_id, user_id, star_count) VALUES (1, 11, 5), (1, 7, 5), (1, 8, 5), (1, 9, 5), (1, 10, 5), (20, 10, 5), (20, 11, 5), (20, 8, 5), (20, 9, 5);

추가

프로필 수정

신청

Related Issue

Issue Number: close #27 Issue Number: close #36 Issue Number: close #46

yunzae commented 11 months ago

별점api관련해서는 회의시간 때 이야기 해보면 좋을 것 같습니다.

sososo0 commented 11 months ago

5주차에는 포함시키지 않고 6주차로 넘기겠습니다~

xcelxlorx commented 11 months ago

conflict 해결 후 수정 사항 반영했습니다. 확인 부탁드립니다!

jagaldol commented 11 months ago

쿼리 테스트 도중 참여기록 조회 api에서 주소 정보가 추가 쿼리 발생하는 걸 확인했습니다. 찾아보다가 해결법 바로 찾아서 주소 정보를 join fetch 하도록 브랜치 위에 커밋 하나 추가하였습니다.

xcelxlorx commented 11 months ago

수정 완료했습니다. 확인 부탁드립니다!