From 842c96bf05644eafff778afbe6dfeb951284ea2f Mon Sep 17 00:00:00 2001 From: EUNA <67576476+beni1026@users.noreply.github.com> Date: Thu, 23 Feb 2023 11:03:01 +0900 Subject: [PATCH] =?UTF-8?q?v1.4=20=EB=B0=B0=ED=8F=AC=20(#338)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 로그인시 DB에 등록된 이메일이 없는 경우 예외처리 클래스 추가 * feat: 예외처리 로직 구현 * refactor: UserService isLoginSuccess함수 로직 수정 * feat: UserService isLogin 로직 구현 * feat: ResponseEntity로 로그인 성공 여부 응답 * refactor: Message 클래스에 중복 코드 함수로 구현 make200Response, make400Response 함수 생성 및 스태틱 함수로 사용 메세지를 인자로 전달받아 RepsonseEntity 반환해주는 함수 * feat: pages폴더 디렉토리 구조 수정 * chore: application properties git ignore에 추가 * chore: build.gradle 수정 * chore: db setting sql문 수정 UserRepository query 수정 406 error > Message dto getter 추가 * 💄design: add sign up page markup * refactor: ExceptionHandler 어노테이션을 통한 예외 처리 구현 * refactor: Controller에서 ResponseEntity 생성 * refactor: UserService isLoginSuccess > login으로 함수명 변경 * feat: Valid 어노테이션 예외 처리 * rename: SignupNicknameDuplicatedException >> NicknameDuplicatedException * feat: UserService, UserRepository 변수 private final로 변경 * TEST: 로그인, 회원가입 테스트 코드 작성 * feat: 메인페이지 마크업 * fix: 이미지 경로 수정 * fix: Valid 어노테이션 예외처리 핸들러 수정 MethodArgumentNotValidException >> BindException * fix: 갤러리 grid 형태로 수정 * fix: 이미지 높이 수정 * fix: password, nickname 순서 변경 * feat: RestControllerAdvice 어노테이션 삭제 * feat: Post Model 작성 DDL 수정 Post Model 생성 * feat: PostRepository 구현 * feat: Post entity id 추가 * feat: Image model 생성 * feat: dto/GeustPostsResponse 생성 비로그인에서의 포스트 Response 클래스 * feat: ImageRepository 생성 postId를 통해 image를 찾는 getImageByPostId 메소드 작성 fix: PostRepository sql문의 where 삭제 * feat: PostService/GuestPostsResponse 구현 비로그인 상태에서 최근 게시물 10개를 반환하는 메소드 * fix: PostService Repository 접근제어자 변경 private final로 변경 Autowired 생성자 수정 * feat: PostController 구현중 * feat: LoginPostsResponse 생성 로그인 시의 메인페이지 api 클래스 * feat: PostController 로그인 페이지 구현중 * feat: PostController에 프로필 조회 함수 추가 * feat: PostController profile 함수 현재 접속한 사용자에 따른 분기 추가 * feat: 해시태그(HashTag) 클래스 생성 * feat: HashtagRepository에서 태그 이름으로 Hashtag를 조회하는 메서드 추가 - findHashtagByName(): 태그 이름으로 Hashtag를 조회 * feat: findHashtagByName()에서 해당 이름의 해시태그가 존재하지 않는 경우 HashtagNotExistException을 발생하도록 구현 * feat: 필요없는 문서 삭제 * feat: 키워드로 게시글 조회 시 사용할 응답 객체 PostSearchResponse 클래스 생성 * feat: PostService에서 키워드로 게시물을 조회하는 searchByTags() 메서드 구현 - 쿼리 파라미터로 들어온 태그를 "+" 기준으로 split - hashtagRepository에서 태그 이름으로 Hashtag 조회하여 해당 Hashtag의 아이디를 hashtagIds 리스트에 추가 - postRepository.searchByHashtags()를 호출하여 해시태그를 가지고 있는 게시물 조회 - imageRepository.getImageByPostId()를 호출하여 이미지를 조회하여 리스트에 추가 - 이미지 리스트를 PostsSearchResponse 응답 객체에 넣어서 반환 * feat: PostRepository에서 해시태그로 게시물을 조회하는 searchByHashtags() 메서드 구현 - 인자로 넘겨온 hashtagIds로 where 조건절을 생성 - where 조건절을 포함한 전체 쿼리문 생성 - jdbcTemplate으로 쿼리문 실행 - List 타입으로 반환 * feat: HashtagRepository에 @Repository 어노테이션 추가 * feat: PostController에 태그로 게시물을 조회하는 searchPostsByTags() 메서드 추가 - @GetMapping에서 URL 충돌이 나기 때문에 주석 처리 * feat: PostController에서 태그로 게시물을 조회하는 searchPostsByTags() 메서드와 매핑될 URL 변경 - @GetMapping에 매핑될 URL을 "/posts/m/search"로 변경 * refactor: subString()을 사용하여 로직 단축 - 맨 마지막에 들어가는 " ON " 문자열을 삭제하는 로직을 deleteCharAt()을 4번 호출하는 대신 subString()을 사용 * feat: 글 작성 페이지 마크업 * style: SQL문을 대문자로 통일 * 💄design: add sign up Postdetail Page markup * feat: PostService의 getRecentPosts() 메서드 내부 로직 수정 기존의 로직은 postRepository를 통해 post를 가져온 다음, post의 아이디로 image를 가져왔지만, 이 방식은 쿼리를 2번이나 보내기 때문에 성능 저하의 문제가 있다. 그래서 쿼리를 2번 보내는 대신 imageRepository.getImagesOfRecentPosts()를 호출하여 IMAGE 테이블과 POST 테이블을 join하여 바로 List를 가져오도록 수정하였다. - ImageRepository에 getImagesOfRecentPosts() 메서드 추가 * pulled develop * feat: Follow model 생성 * feat: FollowRepository 생성 getFollowerIds 메소드: following id로 follower id 목록을 조회하는 메소드 getFollowingIds 메소드: follower id로 following id 목록을 조회하는 메소드 getFollowerCount 메소드: followingId로 follower 수를 조회하는 메소드 getFollowingCount 메소드: followerId로 following 수를 조회하는 메소드 feat: User에 id 추가 * chore: PostRepository 병합 기존의 pr된 코드와 병합 * chore: PostService 병합 기존 pr과 병합 * feat: PostController 기능 추가 getLoginPosts: 로그인 상태의 response를 반환하는 기능 * refactor: HttpServletRequest를 받는 방식 변경 method 인자로 바로 받는 방식으로 수정 * chore: cherrypick 중 누락된 import 수정 * feat: 글 수정 menu 추가 * feat: ImageRepository 기능 추가 및 PostService 로직 변경 ImageRepository.getImagesOfRecentFollowingPosts: followerId를 통해 이미지 리스트를 조회하는 메소드 PostService.getRecentFollowerPosts: 기존 postRepository 사용 로직 -> imageRepository 사용 로직으로 변경 PostRepository 더이상 안쓰는 기존 메소드 deprecated 처리 * Update README.md ERD 차량 모델, 차량 타입 테이블 추가 * feat: PostController profile 조회 함수 설계 * feat: 프로필 dto 클래스 생성 * feat: PostService 프로필 페이지 조회 로직 구현 * feat: User repository 닉네임으로 이메일 조회 할 때 예외처리 * feat: UserRepository findEmailByNickname select * >> select email emailRowMapper 함수 만들어서 이메일 하나만 가져오도록 구현 * feat: User에 id 필드 추가 * feat: UserID와 닉네임으로 DB에서 Image를 찾는 로직 구현 * fix: ImageRepository select문 칼럼 수정 *->IMAGE.post_id, IMAGE.image_url * feat: PostService 프로필 파일 불러오는 기능 구현 followRepository를 통한 정보 조회 기능 구현 * feat: FollowRepository isFollow query 수정 * refactor: response dto builder 패턴 적용 * refactor: builder패턴 함수명 변경 set 제거 * feat: PostService의 searchByTags() 메서드 내부 로직 수정 기존의 로직은 hashtagRepository로 태그 이름에 해당하는 태그의 아이디를 가져오고, postRepository를 통해 해당 태그를 가지고 있는 post를 가져온 다음, ImageRepository를 통해 post의 아이디로 image를 가져왔다. 이 방식은 쿼리를 총 3번이나 보내기 때문에 성능 저하의 문제가 있다. 그래서 쿼리를 3번 보내는 대신 imageRepository.getImagesOfRecentPostsByTags()를 호출하도록 수정하였다. - ImageRepository에 getImagesOfRecentPostsByTags() 메서드 추가 - POST, POST_HASHTAG, HASHTAG, IMAGE 테이블을 join하여 List 반환 - 태그 이름 관련 조건절을 생성하는 createTagNameConditionalStatement() 메서드 추가 - 인자로 주어진 태그 이름들을 " OR "로 연결하여 조건절 생성 - PostRepository의 searchByHashtags(), createWhereStatement() 메서드 삭제 * style: 해당 태그 이름을 가지는 해시태그가 없는 경우 발생하는 예외 메시지 변경 - "ERROR: Hashtag not exist"로 변경 * feat: profile page markup posts mode markup * refactor: PostsSearchResponse 응답 객체에 Builder 패턴 적용 * docs: DDL 수정 TYPE 테이블 추가 MODEL 테이블 추가 POST 테이블 create_date column에 index 설정 * feat: 컴포넌트 obj 동적 값 가질 수 있도록 수정 * feat: 오타 수정 * feat: 헤더 분리 * feat: 해시 태그 리스트 분리 * feat: postlist분리 * feat: 검색 폼 분리 * feat: 분리된 컴포넌트 생성 더미데이터 이용 * refactor: 메인 페이지 response 및 user 레포지토리 리팩토링 (#118) * refactor: GuestPostsResponse Builder 패턴 적용 * refactor: LoginPostsResponse Builder 패턴 적용 * refactor: PostService의 response Builder 패턴 적용 * feat: UserRepository에 findUserByNickname 메소드 추가 deprecated: findEmailByNickname, findUserIdByNickname, emailRowMapper, idRowMapper * refactor: PostService.otherProfile 내부 메소드일부 수정 findUserIdByNickname -> findUserByNickname.getId 로 수정 findUserEmailByNickname -> findUserByNickname.getEmail 로 수정 * refactor: PostService.otherProfile의 profileUserId->profileUser 로 변경 * fix: findUserByNickname 의 exception을 LoginEmailNotExistException -> NicknameNotExistException 으로 변경 * refactor: User 관련 Exception 메시지 상수화 * refactor: userRepository.findUserByNickname(profileUserNickname) -> profileUser로 변경 * feat: add profile page modify modal markup * delete: postdetail scss 오타 수정 * refactor: login, signup scss 전역 설정 됐던 것들 container 안에 넣음 * refactor: scss tab 간격 수정 * delete: pretiierrc 삭제 * feat: 닉네임 변경 (#119) * feat: UserController 닉네임 변경 함수 구현 로직 구현, dto 클래스 생성 * feat: UserService 닉네임변경 로직 구현중 origin pull 받기 * feat: UserService, UserRepository 닉네임변경 로직 구현 완료 * feat: 기존 닉네임이 데이터베이스에 없을 경우 예외처리 추가 * feat: UserController에서 추가한 예외처리 핸들링 * rename: 닉네임 변경 dto 클래스 이름 변경 * rename: UserRepository 함수명 변경 modifyNicknameByNewNickname >> modifyNickname * feat: request body json으로 변경 > Requestbody 어노테이션 추가 * test: 해시태그를 통한 게시물 검색 기능 테스트 코드 작성 (#121) * refactor: HashtagNotExistException의 에러 메시지를 외부에서 인자로 주는 것이 아니라 exception 클래스에서 관리하도록 변경 * fix: UserServiceTest의 테스트 실패하는 메서드를 성공하도록 변수의 값 수정 - signupNicknameDuplicate() 테스트: 닉네임 입력 값 수정 - loginSuccess() 테스트: 비밀번호 입력 값 수정 - 불필요한 import문 삭제 및 인텔리제이 자동 정렬 기능을 사용하여 코드 포맷팅 - 불필요한 멤버 변수 userRepository 삭제 * fix: 쿼리문에서 문자열을 사용할 때 문자열을 ''로 감싸도록 수정 테스트 코드를 작성하여 테스트 실행 중 발견한 오류로, 쿼리문의 문자열을 ''로 감싸도록 수정 * test: 해시태그를 통한 게시물 검색 기능 테스트 코드 작성 외부 DB에 저장되어있는 샘플 데이터로 테스트 실행 * refactor: PostService의 불필요한 멤버 변수 hashtagRepository 삭제 * test: 메인 페이지 게시글 이미지 리스트 조회 테스트 코드 작성 (#124) * chore: pr과 merge * test: PostServiceTest의 getRecentFollowerPostsTest 작성 비로그인 상태에서의 정상적인 메인 페이지 동작 테스트 fix: ImageRepository의 getImagesOfRecentFollowingPosts 쿼리에 띄어쓰기 누락된 버그 수정 * chore: PR merge * chore: 구현하지 않은 test method 삭제 * Update README.md 노션 링크 변경 * feat: 비밀번호 변경 (#125) * feat: UserController 비밀번호 변경 함수 로직 구현 및 dto 추가 * feat: UserService, UserRepository 비밀번호 변경 함수 구현 * feat: 기존 비밀번호와 입력한 비밀번호 확인 로직 추가 * fix: 세션 관련 로직 수정 세션에 user id를 저장하고 불러온 userid를 통해 user를 조회하고 관련 로직을 수행하도록 변경 기존에는 user 통째로 세션에 저장함 >> 변경 사항 발생 시 세션을 일일히 업데이트 해주어야됨 >> 세션에는 변경이 불가능한 userid를 저장하고 userid를 통해 유저 정보 관리 * refactor: modifyPassword 함수 내 로직 이미 구현해놓은 함수로 리팩토링 * feat: ModifyPasswordForm password 필드에도 제약조건 추가 * refactor: isLogin 파라미터 변경, checkLogin함수 구현, exception 생성 * feat: 로그인 아닌 경우 예외처리 추가 * rename: checkLogin >> checkLoginException 함수명 변경 * Create main.yml 배포를 위한 yml 파일 작성 * v0.1 배포 (#126) * chore: 프로젝트 디렉토리 구조 설정 * chore: 백엔드 프로젝트 세팅 * chore: .DS_Store 관련 세팅 * chore: build.gradle 관련 세팅 * chore: 프론트 프로젝트 세팅 * docs: README.md ERD 사진 추가 * docs: README.md ERD 사진 수정 * docs: README.md ERD 이미지 변경 * chore: READMD.md ERD 오타 수정 * chore: 프로젝트 초기 폴더 구조 세팅 * chore: MySQL 의존성 추가 * chore: MySQL 연결 정보 추가 - 패스워드 제외하고 작성 * chore:절대경로 설정 * fix: 한글 인코딩 에러 해결 * chore: 전역 style 설정 * chore: 웹 폰트 불러오기 * docs: DB 테이블을 생성하는 DDL 추가 * docs: DB 테이블을 삭제하는 DDL 추가 * docs: 사용자와 게시물 샘플 데이터를 삽입하고 조회하는 sql문 추가 * chore: 프로젝트 디렉토리 세팅 * feat: 회원가입 dto 생성 * feat: UserController signup 함수 추가 PostMapping으로 처리, 결과 return은 임시로 String으로 처리 * feat: UserController와 UserService Bean 연결 생성자 주입 방식으로 연결 * feat: UserService 로직 설계 signup함수와 isDuplicated함수 설계 및 구현준비 * fix: 구현되지 않은 db로직 주석처리 * feat: 기본 page 생성 * feat: routes 상수 분리 * feat: 라우팅 기능 추가 push, replace 기능 * feat: App에 라우팅 기능 적용 * chore: axios 객체 생성 * Update README.md * 💄design: 추가 로그인 페이지 초기 마크업 * ⚒refactor: modify baseURL * ⚒refactor: set Timedut and divide Content * ⚒refactor: add encoding * feat: build.gradle 추가 spring-boot-starter-validation 추가 * feat: 입력받은 정보가 잘못된 형식일 경우 회원가입 제한 이메일 형식이 아닐 경우, 닉네임을 16자 넘어 입력할 경우, 비밀번호를 16자 넘어 입력할 경우 제한 @Valid 어노테이션을 통해 구현 중복된 사용자 이메일, 닉네임 판별은 db와 같이 구현 필요 * feat: jdbc gradle 추가 * feat: SignupForm getter 추가 * feat: UserRepository addUser 기능 구현 * feat: user 클래스 구현 * feat: UserRepository 이메일, 닉네임 중복체크 기능 구현 * feat: exception 처리 클래스 추가 * feat: UserService 로직 수정 isDuplicated > checkDuplicated로 함수명 수정 만든 custom exception으로 이메일, 닉네임 중복 핸들링 * feat: 응답을 위한 Message DTO 추가 * feat: ResponseEntity로 회원가입 성공 여부 응답 * feat: app.js에 render 함수 추가 * feat: UserController login 함수 작성 * feat: LoginForm dto class 생성 * fix: 미구현 함수 주석처리 * feat: UserService login 함수 설계 * feat: LoginForm 형식 제한 * feat: UserRepository 함수 작성 및 주석처리 db설계 후 합치기 * fix: UserRepository 주석 삭제 * feat: LoginForm, User 클래스 getter 추가 * feat: 로그인시 DB에 등록된 이메일이 없는 경우 예외처리 클래스 추가 * feat: 예외처리 로직 구현 * refactor: UserService isLoginSuccess함수 로직 수정 * feat: UserService isLogin 로직 구현 * feat: ResponseEntity로 로그인 성공 여부 응답 * refactor: Message 클래스에 중복 코드 함수로 구현 make200Response, make400Response 함수 생성 및 스태틱 함수로 사용 메세지를 인자로 전달받아 RepsonseEntity 반환해주는 함수 * feat: pages폴더 디렉토리 구조 수정 * chore: application properties git ignore에 추가 * chore: build.gradle 수정 * chore: db setting sql문 수정 UserRepository query 수정 406 error > Message dto getter 추가 * 💄design: add sign up page markup * refactor: ExceptionHandler 어노테이션을 통한 예외 처리 구현 * refactor: Controller에서 ResponseEntity 생성 * refactor: UserService isLoginSuccess > login으로 함수명 변경 * feat: Valid 어노테이션 예외 처리 * rename: SignupNicknameDuplicatedException >> NicknameDuplicatedException * feat: UserService, UserRepository 변수 private final로 변경 * TEST: 로그인, 회원가입 테스트 코드 작성 * feat: 메인페이지 마크업 * fix: 이미지 경로 수정 * fix: Valid 어노테이션 예외처리 핸들러 수정 MethodArgumentNotValidException >> BindException * fix: 갤러리 grid 형태로 수정 * fix: 이미지 높이 수정 * fix: password, nickname 순서 변경 * feat: RestControllerAdvice 어노테이션 삭제 * feat: Post Model 작성 DDL 수정 Post Model 생성 * feat: PostRepository 구현 * feat: Post entity id 추가 * feat: Image model 생성 * feat: dto/GeustPostsResponse 생성 비로그인에서의 포스트 Response 클래스 * feat: ImageRepository 생성 postId를 통해 image를 찾는 getImageByPostId 메소드 작성 fix: PostRepository sql문의 where 삭제 * feat: PostService/GuestPostsResponse 구현 비로그인 상태에서 최근 게시물 10개를 반환하는 메소드 * fix: PostService Repository 접근제어자 변경 private final로 변경 Autowired 생성자 수정 * feat: PostController 구현중 * feat: LoginPostsResponse 생성 로그인 시의 메인페이지 api 클래스 * feat: PostController 로그인 페이지 구현중 * feat: PostController에 프로필 조회 함수 추가 * feat: PostController profile 함수 현재 접속한 사용자에 따른 분기 추가 * feat: 해시태그(HashTag) 클래스 생성 * feat: HashtagRepository에서 태그 이름으로 Hashtag를 조회하는 메서드 추가 - findHashtagByName(): 태그 이름으로 Hashtag를 조회 * feat: findHashtagByName()에서 해당 이름의 해시태그가 존재하지 않는 경우 HashtagNotExistException을 발생하도록 구현 * feat: 필요없는 문서 삭제 * feat: 키워드로 게시글 조회 시 사용할 응답 객체 PostSearchResponse 클래스 생성 * feat: PostService에서 키워드로 게시물을 조회하는 searchByTags() 메서드 구현 - 쿼리 파라미터로 들어온 태그를 "+" 기준으로 split - hashtagRepository에서 태그 이름으로 Hashtag 조회하여 해당 Hashtag의 아이디를 hashtagIds 리스트에 추가 - postRepository.searchByHashtags()를 호출하여 해시태그를 가지고 있는 게시물 조회 - imageRepository.getImageByPostId()를 호출하여 이미지를 조회하여 리스트에 추가 - 이미지 리스트를 PostsSearchResponse 응답 객체에 넣어서 반환 * feat: PostRepository에서 해시태그로 게시물을 조회하는 searchByHashtags() 메서드 구현 - 인자로 넘겨온 hashtagIds로 where 조건절을 생성 - where 조건절을 포함한 전체 쿼리문 생성 - jdbcTemplate으로 쿼리문 실행 - List 타입으로 반환 * feat: HashtagRepository에 @Repository 어노테이션 추가 * feat: PostController에 태그로 게시물을 조회하는 searchPostsByTags() 메서드 추가 - @GetMapping에서 URL 충돌이 나기 때문에 주석 처리 * feat: PostController에서 태그로 게시물을 조회하는 searchPostsByTags() 메서드와 매핑될 URL 변경 - @GetMapping에 매핑될 URL을 "/posts/m/search"로 변경 * refactor: subString()을 사용하여 로직 단축 - 맨 마지막에 들어가는 " ON " 문자열을 삭제하는 로직을 deleteCharAt()을 4번 호출하는 대신 subString()을 사용 * feat: 글 작성 페이지 마크업 * style: SQL문을 대문자로 통일 * 💄design: add sign up Postdetail Page markup * feat: PostService의 getRecentPosts() 메서드 내부 로직 수정 기존의 로직은 postRepository를 통해 post를 가져온 다음, post의 아이디로 image를 가져왔지만, 이 방식은 쿼리를 2번이나 보내기 때문에 성능 저하의 문제가 있다. 그래서 쿼리를 2번 보내는 대신 imageRepository.getImagesOfRecentPosts()를 호출하여 IMAGE 테이블과 POST 테이블을 join하여 바로 List를 가져오도록 수정하였다. - ImageRepository에 getImagesOfRecentPosts() 메서드 추가 * pulled develop * feat: Follow model 생성 * feat: FollowRepository 생성 getFollowerIds 메소드: following id로 follower id 목록을 조회하는 메소드 getFollowingIds 메소드: follower id로 following id 목록을 조회하는 메소드 getFollowerCount 메소드: followingId로 follower 수를 조회하는 메소드 getFollowingCount 메소드: followerId로 following 수를 조회하는 메소드 feat: User에 id 추가 * chore: PostRepository 병합 기존의 pr된 코드와 병합 * chore: PostService 병합 기존 pr과 병합 * feat: PostController 기능 추가 getLoginPosts: 로그인 상태의 response를 반환하는 기능 * refactor: HttpServletRequest를 받는 방식 변경 method 인자로 바로 받는 방식으로 수정 * chore: cherrypick 중 누락된 import 수정 * feat: 글 수정 menu 추가 * feat: ImageRepository 기능 추가 및 PostService 로직 변경 ImageRepository.getImagesOfRecentFollowingPosts: followerId를 통해 이미지 리스트를 조회하는 메소드 PostService.getRecentFollowerPosts: 기존 postRepository 사용 로직 -> imageRepository 사용 로직으로 변경 PostRepository 더이상 안쓰는 기존 메소드 deprecated 처리 * Update README.md ERD 차량 모델, 차량 타입 테이블 추가 * feat: PostController profile 조회 함수 설계 * feat: 프로필 dto 클래스 생성 * feat: PostService 프로필 페이지 조회 로직 구현 * feat: User repository 닉네임으로 이메일 조회 할 때 예외처리 * feat: UserRepository findEmailByNickname select * >> select email emailRowMapper 함수 만들어서 이메일 하나만 가져오도록 구현 * feat: User에 id 필드 추가 * feat: UserID와 닉네임으로 DB에서 Image를 찾는 로직 구현 * fix: ImageRepository select문 칼럼 수정 *->IMAGE.post_id, IMAGE.image_url * feat: PostService 프로필 파일 불러오는 기능 구현 followRepository를 통한 정보 조회 기능 구현 * feat: FollowRepository isFollow query 수정 * refactor: response dto builder 패턴 적용 * refactor: builder패턴 함수명 변경 set 제거 * feat: PostService의 searchByTags() 메서드 내부 로직 수정 기존의 로직은 hashtagRepository로 태그 이름에 해당하는 태그의 아이디를 가져오고, postRepository를 통해 해당 태그를 가지고 있는 post를 가져온 다음, ImageRepository를 통해 post의 아이디로 image를 가져왔다. 이 방식은 쿼리를 총 3번이나 보내기 때문에 성능 저하의 문제가 있다. 그래서 쿼리를 3번 보내는 대신 imageRepository.getImagesOfRecentPostsByTags()를 호출하도록 수정하였다. - ImageRepository에 getImagesOfRecentPostsByTags() 메서드 추가 - POST, POST_HASHTAG, HASHTAG, IMAGE 테이블을 join하여 List 반환 - 태그 이름 관련 조건절을 생성하는 createTagNameConditionalStatement() 메서드 추가 - 인자로 주어진 태그 이름들을 " OR "로 연결하여 조건절 생성 - PostRepository의 searchByHashtags(), createWhereStatement() 메서드 삭제 * style: 해당 태그 이름을 가지는 해시태그가 없는 경우 발생하는 예외 메시지 변경 - "ERROR: Hashtag not exist"로 변경 * feat: profile page markup posts mode markup * refactor: PostsSearchResponse 응답 객체에 Builder 패턴 적용 * docs: DDL 수정 TYPE 테이블 추가 MODEL 테이블 추가 POST 테이블 create_date column에 index 설정 * feat: 컴포넌트 obj 동적 값 가질 수 있도록 수정 * feat: 오타 수정 * feat: 헤더 분리 * feat: 해시 태그 리스트 분리 * feat: postlist분리 * feat: 검색 폼 분리 * feat: 분리된 컴포넌트 생성 더미데이터 이용 * refactor: 메인 페이지 response 및 user 레포지토리 리팩토링 (#118) * refactor: GuestPostsResponse Builder 패턴 적용 * refactor: LoginPostsResponse Builder 패턴 적용 * refactor: PostService의 response Builder 패턴 적용 * feat: UserRepository에 findUserByNickname 메소드 추가 deprecated: findEmailByNickname, findUserIdByNickname, emailRowMapper, idRowMapper * refactor: PostService.otherProfile 내부 메소드일부 수정 findUserIdByNickname -> findUserByNickname.getId 로 수정 findUserEmailByNickname -> findUserByNickname.getEmail 로 수정 * refactor: PostService.otherProfile의 profileUserId->profileUser 로 변경 * fix: findUserByNickname 의 exception을 LoginEmailNotExistException -> NicknameNotExistException 으로 변경 * refactor: User 관련 Exception 메시지 상수화 * refactor: userRepository.findUserByNickname(profileUserNickname) -> profileUser로 변경 * feat: add profile page modify modal markup * delete: postdetail scss 오타 수정 * refactor: login, signup scss 전역 설정 됐던 것들 container 안에 넣음 * refactor: scss tab 간격 수정 * delete: pretiierrc 삭제 * feat: 닉네임 변경 (#119) * feat: UserController 닉네임 변경 함수 구현 로직 구현, dto 클래스 생성 * feat: UserService 닉네임변경 로직 구현중 origin pull 받기 * feat: UserService, UserRepository 닉네임변경 로직 구현 완료 * feat: 기존 닉네임이 데이터베이스에 없을 경우 예외처리 추가 * feat: UserController에서 추가한 예외처리 핸들링 * rename: 닉네임 변경 dto 클래스 이름 변경 * rename: UserRepository 함수명 변경 modifyNicknameByNewNickname >> modifyNickname * feat: request body json으로 변경 > Requestbody 어노테이션 추가 * test: 해시태그를 통한 게시물 검색 기능 테스트 코드 작성 (#121) * refactor: HashtagNotExistException의 에러 메시지를 외부에서 인자로 주는 것이 아니라 exception 클래스에서 관리하도록 변경 * fix: UserServiceTest의 테스트 실패하는 메서드를 성공하도록 변수의 값 수정 - signupNicknameDuplicate() 테스트: 닉네임 입력 값 수정 - loginSuccess() 테스트: 비밀번호 입력 값 수정 - 불필요한 import문 삭제 및 인텔리제이 자동 정렬 기능을 사용하여 코드 포맷팅 - 불필요한 멤버 변수 userRepository 삭제 * fix: 쿼리문에서 문자열을 사용할 때 문자열을 ''로 감싸도록 수정 테스트 코드를 작성하여 테스트 실행 중 발견한 오류로, 쿼리문의 문자열을 ''로 감싸도록 수정 * test: 해시태그를 통한 게시물 검색 기능 테스트 코드 작성 외부 DB에 저장되어있는 샘플 데이터로 테스트 실행 * refactor: PostService의 불필요한 멤버 변수 hashtagRepository 삭제 * test: 메인 페이지 게시글 이미지 리스트 조회 테스트 코드 작성 (#124) * chore: pr과 merge * test: PostServiceTest의 getRecentFollowerPostsTest 작성 비로그인 상태에서의 정상적인 메인 페이지 동작 테스트 fix: ImageRepository의 getImagesOfRecentFollowingPosts 쿼리에 띄어쓰기 누락된 버그 수정 * chore: PR merge * chore: 구현하지 않은 test method 삭제 * Update README.md 노션 링크 변경 * feat: 비밀번호 변경 (#125) * feat: UserController 비밀번호 변경 함수 로직 구현 및 dto 추가 * feat: UserService, UserRepository 비밀번호 변경 함수 구현 * feat: 기존 비밀번호와 입력한 비밀번호 확인 로직 추가 * fix: 세션 관련 로직 수정 세션에 user id를 저장하고 불러온 userid를 통해 user를 조회하고 관련 로직을 수행하도록 변경 기존에는 user 통째로 세션에 저장함 >> 변경 사항 발생 시 세션을 일일히 업데이트 해주어야됨 >> 세션에는 변경이 불가능한 userid를 저장하고 userid를 통해 유저 정보 관리 * refactor: modifyPassword 함수 내 로직 이미 구현해놓은 함수로 리팩토링 * feat: ModifyPasswordForm password 필드에도 제약조건 추가 * refactor: isLogin 파라미터 변경, checkLogin함수 구현, exception 생성 * feat: 로그인 아닌 경우 예외처리 추가 * rename: checkLogin >> checkLoginException 함수명 변경 --------- Co-authored-by: EUNA <67576476+beni1026@users.noreply.github.com> Co-authored-by: Soomin Lim <63943319+Soomin-Lim@users.noreply.github.com> Co-authored-by: 이재훈 <86291473+jaehunLee-dev@users.noreply.github.com> Co-authored-by: Soomin-Lim Co-authored-by: Dongja Co-authored-by: EUNA Co-authored-by: Dongja <43432783+DongjaJ@users.noreply.github.com> Co-authored-by: jaehunLee-dev * feat: 카테고리(키워드) 검색 기능 (#127) * feat: 컴포넌트 구조 수정 * feat: api 인스턴스 이름 수정 * feat: scss formatter 적용 * feat: 카테고리 함수 분리 * feat: 카테고리 검색 기능 * feat : 회원가입 input validation (#129) * feat: password, nickname 길이 16자 제한 * feat: 회원가입 성공시 로그인 페이지로 이동 * feat: 입력값 체크 함수분리 * refactor: 에러메시지 상수 분리 * feat: input값 trim 추가 * delete: 중복 체크 로직 제거 * delete: 더미 유저 정보 제거 * fix: 타입 에러 수정 * feat: login validation (#131) * feat: login 성공시 메인페이지로 이동 * feat: login input 빈값 체크 * feat: login, signup id의 form name 수정 * feat: 로그아웃 구현 (#130) * feat: 로그아웃 구현 받아온 쿠키로 로그인 상태인지 확인하고 로그인 상태면 invalidate()함수로 로그아웃 진행 * refactor: exception handling 을 해줄 수 있는 클래스 생성 global/exception 폴더에 클래스 생성 * chore: logback git ignore 추가 * hotfix: dto getter함수 추가 dto에 getter함수가 없으면 406 response * feat: 태그 추가/삭제 기능 (#139) * feat: 태그 id 가져오는 기능 * feat: tagstore 생성 * feat: 태그추가/삭제 기능 * feat: 팔로우/언팔로우 기능 구현 (#138) * feat: FollowController 팔로우/언팔로우 기능 구현 및 dto 추가 * feat: 팔로우 여부 판단, 언팔로우 기능 추가 * feat: db 팔로우 정보 추가 기능 구현 * hotfix: followRepository dataSource 누락 발견 및 수정 * hotfix: json 파싱 문제 해결 dto에 빈 생성자 추가 * feat: 해시태그 검색 기능 구현 (#142) * feat: 해시태그 검색의 응답에 사용할 HashtagSearchResponse 응답 객체 생성 - Builder 패턴 적용 - List 타입의 멤버변수 추가 * feat: 접두어로 해시태그를 검색하는 searchHashtagByPrefix() 메서드 구현 * feat: HashtagService 클래스 생성 및 해시태그 검색 기능 구현 - searchHashTag(): 인자로 주어진 키워드로 시작하는 해시태그를 검색하여 HashtagSearchResponse를 반환 * feat: HashtagController 클래스 생성 및 해시태그 검색 API 구현 - searchHashTag(): 쿼리 파라미터로 주어진 키워드로 시작하는 해시태그를 검색하여 그 결과에 대한 응답을 반환 * refactor: SELECT 쿼리문에서 "*"을 쓰지않고 컬럼명을 직접 사용하도록 변경 * fix: URL을 인코딩할 때 "+"를 공백으로 인코딩하기 때문에, PostService의 searchByTags()에서 태그 이름을 구분하는 구분자를 "+"에서 공백으로 변경 - PostService 로직 변경에 따라 PostServiceTest의 테스트 코드도 변경 * feat: 팔로잉, 팔로워 리스트 조회 (#143) * feat: FollowListResponse dto 추가 follower, following list response를 위한 dto * feat: UserRepository.getFollowingNicknames 메소드 추가 닉네임으로 팔로잉 닉네임 리스트를 조회하는 메소드 * feat: UserRepository.getFollowerNicknames 메소드 추가 닉네임으로 팔로워 닉네임 리스트를 조회하는 메소드 * feat: FolloweService 기능 추가 getFollowings: following 목록 response를 반환 getFollowers: follower 목록 response를 반환 * feat: FollowController 기능 추가 getFollowers: follower 목록 request에 대한 control getFollowings: following 목록 request에 대한 control * fix: GetMapping 수정 * fix: SQL 에러 수정 * refactor: FollowListResponse 빈 생성자 제거 * refactor: SELECT 쿼리문에서 "*"을 쓰지않고 컬럼명을 직접 사용하도록 변경 (#144) * feat: [로그인/회원가입] 비밀번호 암호화 (#147) * chore: jbcrypt gradle 추가 * feat: UserService에 encryptPassword 메소드 추가 비밀번호 암호화 메소드 * feat: 비밀번호 암호화 구현 signupForm 비밀번호 암호화 후 리포지토리 등록 User 생성자 추가 * refactor: User 생성자의 id 기본값 -1 -> 0으로 변경 * test: 해시태그 검색 기능 테스트 코드 작성 (#146) * test: PostService의 해시태그 검색 기능을 테스트하는 테스트 코드 작성 * refactor: 여러 키워드를 사용하여 테스트할 수 있도록 변경 * fix: 타입 에러 수정 * docs: 리드미 업데이트 * refactor: 팔로우/언팔로우 방식 soft delete로 변경 (#155) * refactor: FollowRepository.addFollow 방식 변경 신규 팔로우인 경우 insert, 과거 팔로우했었던 경우 update 수행하는 upsert 로직으로 변경 * refactor: ImageRepository의 getImagesOfRecentFollowingPosts 쿼리 수정 is_deleted 확인 추가 * feat : 프로필 페이지 컴포넌트 분리 (#154) * feat: 팔로우 버튼 컴포넌트 분리 * feat: 메뉴, 게시글리스트, 팔로우 리스트 컴포넌트 분리 * feat: 게시물, 팔로워, 팔로잉 부분 누르면 보여주는 콘텐츠 변경 * feat: 더미데이터들과 컴포넌트 연결 * feat: 내 프로필 페이지에서 메뉴 누르면 드롭다운 기능 * faet: add image interface * feat: add follows interface * feat: 이미지 클릭하면 상세 페이지로 이동 * refactor: path 수정 * refactor: 팔로워 누를시 프로필 페이지로 이동 * refactor: 팔로워버튼과 메뉴 컴포넌트 파일로 분리 * chore: proxy 재설정 (#159) * Update README.md api 명세서 update * Update README.md 시스템 아키텍쳐 추가 * chore: store 구조 추상화 (#161) createStore를 모듈로 분리하였습니다 * test: PostService의 myProfile(), otherProfile() 메서드의 테스트 코드 작성 (#156) - myProfile(): 나의 프로필 페이지인 경우 프로필 정보(닉네임, 이메일, 작성한 게시글, 팔로워 수, 팔로잉 수)를 조회하는 기능을 테스트하는 코드 - otherProfile(): 타인의 프로필 페이지인 경우 프로필 정보(닉네임, 이메일, 작성한 게시글, 팔로워 수, 팔로잉 수)와 팔로우 여부를 조회하는 테스트 코드 - 해시태그를 통한 게시물 검색 기능 테스트 코드(searchByTags()) 리팩토링 * feat: 무한 스크롤 구현 (#164) * feat: home css 수정 * feat: 태그검색 api연동 * feat: 검색리스트 컴포넌트 분리 * feat: css수정 * feat: 무한 스크롤 구현 * feat: 로그인 상태 여부에 따른 라우팅 * [FE] [프로필 페이지] : 닉네임, 비밀번호 모달 마크업 추가 (#165) * 💄design: 유저 정보 모달창, 변경 메세지 모달 마크업 * 💄design: 프로필 페이지 애니메이션 추가 * delete: 주석 삭제 * feat: 로그인 페이지 api 연결 (#167) * feat: 로그인 페이지 회원가입 링크 라우팅 * feat: 로그인 페이지 서버와 통신후 validaton 체크 * feat: 로그인 성공시 메인 페이지로 라우팅 * delete: console 로그 삭제 * feat: 로그인 성공시 알림 배경색 파란색 * feat: 회원가입 페이지 api 연동 (#166) * feat: 회원가입 페이지 중복 체크 * feat: 회원가입 페이지 로그인 링크 라우팅 * feat: 회원가입 성공시 알림 배경색 파란색 * test: UserController test 코드 작성 (#162) * test: 회원가입 테스트코드 추가 * feat: 로그인 실패 exception추가 및 로그인 테스트코드 추가 * test: 닉네임 변경 테스트코드 추가 * test: 비밀번호 변경 테스트코드 추가 * test: UserService try catch 대신 assertThrows 사용 * refactor: reformat code * refactor: reformat code * chore: s3 설정 (#169) * chore: s3 gradle 설정 * chore: s3 환경 설정 * feat: 키워드에 따른 이미지 리스트 보여주기 (#171) * feat: 키워드에 해당하는 postlist 렌더링 * feat: 로그인에 따른 라우팅 처리 * feat: 팔로워 삭제 요청 구현 (#173) * feat: FollowController.deleteFollower 작성 * feat: FollowService.deleteFollower 구현 기존 FollowRepository 메소드 재활용 * chore: Message 클래스 패키지 변경 * feat: 글 작성 페이지 컴포넌트 분리 (#174) * feat: 헤더 컴포넌트 props설정 * feat: 해시태그 폼 분리 * feat: 이미지폼 분리 * feat: selection 분리 * feat: textform 분리 * feat: queryselectorAll 함수 생성 * feat: form 분리 * feat: 글 작성 페이지 css 수정 * feat: 이미지 등록 기능 (#175) * feat: 차모델/종류 select 기능 (#179) * test: 기존 테스트 코드 수정 (#176) * test: UserService test 코드 수정 * test: UserService test 코드 수정 WebMvcTest >>> ExtendWith(MockitoExtension.class * test: PostService test 코드 수정 * test: HashtagService test 코드 수정 * test: 닉네임 변경 테스트코드 작성 중 * test: profileUsernickname Get으로 받아오게 수정 * hotfix: UserRepository getFollower, following 로직 수정 * test: test코드 수정 * feat: 모든 태그 검색 기능 구현 (#178) * feat: 차량 종류(Type) 클래스 생성 * feat: 접두어로 차량 종류를 검색하는 searchTypeByPrefix() 메서드 구현 - 기존의 tagRowMapper() 메서드를 hashtagRowMapper()로 이름 변경 - 쿼리 결과로 Type 객체를 매핑하는 typeRowMapper() 메서드 추가 * feat: 차량 종류 태그 검색의 응답에 사용할 TypeSearchResponse 응답 객체 생성 - Builder 패턴 적용 - List 타입의 멤버변수 추가 * feat: 차량 타입 태그를 검색하는 기능 구현 - searchType(): 인자로 주어진 키워드로 시작하는 차량 종류 태그를 검색하여 TypeSearchResponse를 반환 * feat: 차량 종류 태그 검색 API 구현 - searchType(): 쿼리 파라미터로 주어진 키워드로 시작하는 차량 종류 태그를 검색하여 그 결과에 대한 응답을 반환 * feat: 차량 모델(Model) 클래스 생성 * feat: 접두어로 차량 모델을 검색하는 searchModelByPrefix() 메서드 구현 - 쿼리 결과로 Model 객체를 매핑하는 modelRowMapper() 메서드 추가 * feat: 태그 검색 결과에 사용될 Keword DTO 생성 - 태그의 아이디(id), 태그의 카테고리(category), 태그의 이름(tag)을 멤버변수로 생성 - Type, Model, Hashtag 엔티티를 Keyword DTO로 변환하는 정적 팩토리 메서드 추가 * feat: 모든 태그 검색의 응답에 사용할 TagSearchResponse 응답 객체 생성 - Builder 패턴 적용 - List 타입의 멤버변수 추가 * feat: HashtagService의 모든 태그를 검색하는 기능 구현 - searchAllTags(): 인자로 주어진 키워드로 시작하는 모든 태그를 검색하여 TagSearchResponse를 반환 * feat: 모든 태그 검색 API 구현 - searchAllTags(): 쿼리 파라미터로 주어진 키워드로 시작하는 모든 태그를 검색하여 그 결과에 대한 응답을 반환 * feat: 쓰이지 않는 부분 주석처리 API 명세 수정 - 차량 종류 태그 검색 API가 삭제되어 HashtagController의 "/search/type/" API 주석처리 및 HashtagService의 searchType() 메서드 주석처리 * fix: DB 테이블명 오타 수정 - Type 오타를 TYPE으로 수정 * refactor: Keyword 클래스를 TagSearchResult로 이름 변경 Keyword 클래스는 태그 검색 응답에 사용할 DTO 객체인데, "Keyword"라는 이름은 클래스의 역할을 잘 드러나지 못한다고 생각하여 이름을 TagSearchResult로 변경했다. * hotfix: signup return값 변경 * feat: 프로필 페이지 api 연동 (#182) * feat: 게시물, 팔로워, 팔로잉 누르면 해당하는 리스트 보여주기 * feat: 다른 사람 프로필 페이지에서 follow/unfollow * feat: 로그아웃 기능 * delete: 콘솔 로그 삭제 * feat: 차량 종류 전체 조회 및 차량 모델 전체 조회 기능 구현 (#185) * refactor: HashtagSearchResponse와 TagSearchResopnse의 Builder 패턴 삭제 빌더 패턴을 습관적으로 사용하였는데, 빌더 패턴은 생성자 인자가 충분히 많은 상황에서만 적용을 고려해야하므로 인자가 하나인 응답 DTO 객체에서는 Builder 객체를 삭제하였다. * feat: 모든 차량 종류를 조회하는 findAllTypes() 메서드 구현 * refactor: TypeSearchResponse 클래스 이름을 TypesResponse로 이름 변경 검색결과가 아닌 단순 조회이므로 이름 변경 생성자의 인자가 1개이므로 Builder 패턴이 불필요하여 삭제함 * feat: HashtagService 클래스에서 차량 종류를 전체 조회하는 기능 구현 - findAllTypes(): 차량 종류 전체 조회 * feat: 차량 종류 전체 조회 API 구현 - getAllTypes(): 모든 차량 종류 정보를 조회하여 그에 대한 응답을 반환 * feat: 모든 차량 모델을 조회할 때 응답에 사용할 ModelsResponse 응답 객체 생성 - List 타입 멤버변수 * feat: 모든 차량 모델을 조회하는 findAllTypes() 메서드 구현 * feat: HashtagService 클래스에서 차량 모델을 전체 조회하는 기능 구현 - findAllTypes(): 차량 모델 전체 조회 * feat: 차량 모델 전체 조회 API 구현 - getAllModels(): 모든 차량 모델 정보를 조회하여 그에 대한 응답을 반환 * feat: 해시태그 검색 기능 (#186) * feat: 공통 함수 분리 * feat: try-catch문 추가 * feat: 해시태그 검색 기능 * feat: 글 작성 페이지 구현 (#188) * feat: 글 생성 dto NewPostForm 작성 * feat: PostController.createPost 작성 * feat: PostRepository.addPost 추가 * feat: PostService.createPost 작성 NewPostForm content에 getter 추가 * feat: createPost에 imageRepository.addImage 추가 newPostForm image getter 추가 * feat: S3 config 작성 * feat: S3Repository 생성 1. 클라이언트로 받은 이미지를 로컬 파일로 저장 2. 로컬 파일을 S3로 업로드 3. 로컬 파일 삭제 * feat: ImageRepository.addImage 구현 * feat: S3 업로드 예외 처리 * feat: PostController.createPost 구현 * fix: MultipartFile Image valid 수정 * fix: RequestBody -> ModelAttribute로 수정 multipart/form-data 형식 * fix: PostRepository.addPost 버그 수정 insert 이후 pk 값 받아올 수 있도록 keyHolder 활용 * feat: post 모델에 model_id 추가 * chore: 기존 pr merge * style: hashtag -> tag 로 rename * style: Hashtag -> Tag rename * feat: TagRepository.findModelByName 메소드 추가 * feat: PostService에서 tagRepository를 통해 model_id를 설정하도록 변경 * fix: TagRepository.findModelById 버그 수정 * fix: PostRepository.addPost sql 버그 수정 * feat: post 등록이 transactional하도록 수정 * refactor: 이미지 이름에 postid 넣는 위치를 makeLocalFile로 수정 * test: 프로필페이지 관련 테스트 코드 추가 (#187) * test: UserService test 코드 수정 * test: UserService test 코드 수정 WebMvcTest >>> ExtendWith(MockitoExtension.class * test: PostService test 코드 수정 * test: HashtagService test 코드 수정 * test: 닉네임 변경 테스트코드 작성 중 * test: 닉네임 변경 성공 테스트코드 작성 * test: 닉네임 변경 테스트- 로그인 상태 아닐 때 * test: 닉네임 변경, 비밀번호 변경 test 코드 추가 및 비밀번호 변경 로직 수정 * test: PostController test 코드 작성 * test: test 코드 주석 수정 * test: TagService의 메서드를 테스트하느 코드 작성 (#190) - searchAllTags(): 모든 태그 검색 기능 테스트 - findAllTypes(): 모든 차량 종류 조회 기능 테스트 - findAllModels(): 모든 차량 모델 조회 기능 테스트 * feat: 글 작성 페이지 해시태그 추가 (#191) * feat: TagRepository.addHashtag 추가 * feat: 게시글 등록 시 hashtag도 등록되도록 기능 추가 tagRepository.addPostHashtag 추가 postService.createPost 시 hashtag 등록하도록 추가 * feat: 글 작성 페이지 form 기능 (#192) * fix: 검색어 없을 시 태그 추가되는 버그 수정 * feat: textarea 입력 기능 * feat: 태그 삭제 기능 추가 * feat: textarea 디바운스 적용 * feat: image 등록 시 상위 컴포넌트 data 변경 * feat: key값 배열로 만드는 함수 모듈화 * feat: select시 상위 컴포넌트 data 수정 * feat: 라우팅 기능/ form 데이터 저장 처리 * Update README.md * docs: md파일 수정 * docs: md파일 수정 * fix: 프로필 페이지 닉네임 한글일 때 404페이지로 가는 버그 수정 (#194) * feat: 글 수정 구현 (#195) * feat: 글 수정 dto 작성 * feat: 글 수정 요청 controller에서 구현 * feat: postRepository.findPostById 메소드 추가 * feat: 글 수정용 Post 생성자 추가 * feat: postrepository.updatePost 작성 * feat: PostService 수정중 * feat: deletePostHashtags 메소드 추가 * feat: 게시글 수정 서비스 구현 * fix: 버그 수정 ModifiedPostForm Valid 수정 ImageRepository.getImageByPostId 쿼리 수정 * feat: 한글 decode 설정 * fix: S3 이미지 삭제 안되는 버그 수정 * chore: 주석삭제 * feat: 작성한 글 보기 (#196) * feat: PostController 로직 구현, dto 클래스 생성 * feat: 글 상세 페이지 response 클래스 생성 * feat: PostService 로직 구현 * feat: dao 로직 구현 * fix: imageRepository getImageByPostId IMAGE img 추가 * feat: date 형식 변경 로직 추가 * fix: 내가 쓴 글인지 남이 쓴 글인지 판단하는 로직 수정 * feat: 시간 형식 24시간으로 변경 * feat: 모달 visible 처리 (#200) * feat: wordLength 상수 추가 * feat: spinner css 수정 * feat: loading시 처리 기능 추가 * feat: 글자 수 클 때 substring 처리 * feat: 모달 visible 처리 추가 input.value>0이상일 때 보이도록 * Feat: 프로필 페이지 닉네임, 비밀번호 수정 (#201) * feat: 수정 모달창 애니메이션 * feat: 아이디 빈값, 기존값, 비밀번호 빈값, 비밀번호 확인 일치 체크 * feat: 아이디 중복체크, 변경 기능 * feat: 아이디 중복체크, 변경 기능 * delete: userstore삭제 * feat: 좋아요/좋아요취소 기능 추가 (#199) * feat: 좋아요 정보를 받을 dto 클래스 생성 * feat: LikeController 로직 구현 * feat: LikeService, LikeRepository 로직 구현 * fix: findPostById 함수 2개라서 하나 삭제 * hotfix: dd 삭제 * hotfix: Expected 3 arguments, but got 2. 에러 수정 * fix: 메인 페이지 전체 검색 안되는 버그 수정 (#206) * feat: 글자 크기 수정 * fix: 전체 검색 안되는 버그 수정 * fix: 글자수 클 때 substring 하는 함수 모듈화 * fix: 클릭 시 모달 보이도록 다시 수정 * feat: 차량 종류와 차량 모델 태그로도 게시물 검색이 가능하도록 수정 (#208) * feat: 키워드를 통한 게시물 검색 시, 차량 모델과 차량 종류 태그를 쿼리 파라미터로 받도록 수정 - PostController의 searchPostsByTags() 메서드에 @RequestParam으로 type, model을 쿼리 파라미터로 받도록 함 - 컨트롤러 수정에 따라 PostControllerTest의 searchPostsByTags() 메서드 수정 - PostService의 searchByTags() 인자로 type, model을 받도록 함 - PostServiceTest에 게시물 검색 기능을 테스트하는 searchByTags() 메서드 주석 처리 - PostService의 searchByTags() 메서드는 수정사항이 많으므로 일단 테스트 코드를 주석 처리함 * refactor: 로깅하기 위해 로그를 선언하고 호출하는 코드 추가 * refactor: 키워드를 통해 게시물을 검색하는 기능을 하는 searchPostsByTags() 메서드의 이름을 searchPostByTags()로 변경 * refactor: 게시물 검색 응답에 사용되는 PostsSearchResponse에 적용된 Builder 패턴 삭제 빌더 패턴은 생성자 인자가 충분히 많은 상황에서만 적용을 고려해야하므로 인자가 하나인 PostsSearchResponse 객체에서 Builder 패턴을 삭제하였다. - PostService에 logger 추가 - cherry-pick 충돌 해결 * refactor: TagController에 로깅을 위한 로그를 선언하고 호출하는 코드 추가 - 쿼리 파라미터를 확인하기 위해 로그 수정 * feat: PostRepository 클래스에, 키워드를 통해 게시물을 검색할 때 사용할 메서드 추가 - searchByType(): 인자로 주어진 타입명으로 해당 차량 종류 태그를 가진 게시물을 최근순으로 검색 - searchByModel(): 인자로 주어진 모델명으로 해당 차량 모델 태그를 가진 게시물을 최근순으로 검색 - searchByHashtag(): 인자로 주어진 태그명으로 해당 해시태그를 가진 게시물을 최근순으로 검색 * feat: 동일한 게시글인지 판단하기 위해 Post의 hashCode()와 equals() 메서드 오버라이드 키워드를 통한 게시물 검색 시, 해당 태그를 모두 가진 게시물만 조회하기 위해 retainAll()을 사용하였는데, 이 때 id가 같으면 동일한 게시글이라고 판단하도록 하기 위해 hashCode()와 equals() 메서드 오버라이드 - cherry-pick 충돌 해결 * feat: PostService의 searchByTags() 메서드의 내부 로직 수정 기존에는 해시태그로만 게시물 검색이 가능했고, 사용자가 선택한 해시태그들 중 하나라도 가지고 있는 게시물을 검색 결과로 반환했다. 차량 종류와 모델 태그가 추가함에 따라 차량 종류와 모델 태그로도 같이 검색할 수 있도록 수정하였고, 팀원분들과 협의한 결과 키워드를 통한 게시물 검색 기능은 모든 태그를 가지고 있는 게시물만 검색하도록 결정하여 내부 로직을 수정하였다. - cherry-pick 충돌 해결 * fix: 쿼리문 오타 수정 - 불필요한 메서드 주석처리 * refactor: searchByTags() 메서드 분리 및 코드 포맷팅 - 키워드를 통해 게시물을 검색할 때, 차량 종류 -> 차량 모델 -> 해시태그 순으로 게시물을 검색하므로, 차량 모델 태그로 검색하는 로직을 findPostsOfModelTag() 메서드로 분리하고, 해시태그로 검색하는 로직을 findPostsOfHashTag()로 분리함 - check() 메서드의 이름을 의미가 잘 드러나도록 isNeedToSearch()로 변경 * feat: 게시물 조회 쿼리문에 WHERE절 조건으로 "is_deleted=false" 추가 soft delete를 구현하기 위해 POST 테이블에 is_deleted 칼럼을 추가함에 따라, 게시물을 조회하는 모든 쿼리문에 WHERE절 조건으로 "is_deleted=false" 추가 * feat: 게시물 조회 쿼리문의 WHERE절 조건 "is_deleted=false"를 "p.is_deleted = false"로 변경 * feat: isNeedToSearch(String type, int size) 메서드 오버로딩 타입 태그가 있는데 검색 결과가 0인 경우, 해당하는 게시물이 없으니 모델 태그로 검색할 필요가 없으므로 해당 조건을 체크해주는 isNeedToSearch() 메서드를 오버로딩함 * feat: 글 삭제 기능 (#209) * feat: post isdeleted칼럼 추가 및 예외처리 * feat: PostController 로직 구현 * feat: 401 response 추가 및 예외처리 * feat: PostService, PostRepository 게시물 삭제 로직 구현 * feat: findPostById 예외처리 추가 * fix: 차 모델/종류 선택 안되는 버그 수정 (#211) * fix: form 전송 안되는 버그 수정 * feat: 에러메시지 추가 * feat: api 헤더 수정 * feat: home 글씨 두 줄 안되게 수정 * feat: 필수 입력 * 표시 추가 * feat: 글자 수 조정 * test: 글 상세 페이지 관련 테스트코드 작성 (#213) * test: 글 상세 페이지 Controller단 테스트 코드 작성 * test: 글 상세 페이지 Service단 테스트 코드 작성 * feat: 팔로우 리스트에서 삭제 (#214) * fix: 로그아웃 하고 프로필 페이지 눌렀을때 로그인 페이지로 안가는 버그 해결 * feat: 팔로워, 팔로잉리스트에서 닉네임 클릭했을때 해당하는 프로필페이지로 이동 * feat: follower, following 삭제 기능 * refactor: followlist eventhandler 함수로 분리 * test: 키워드를 통한 게시물 검색 기능 테스트 코드 작성 (#215) * test: 키워드를 통한 게시물 검색 기능 테스트 코드 작성 - searchByTagsWithHashtagsAndTypeAndModel(): 해시태그, 타입, 모델 태그로 게시물을 검색한 경우 테스트 - searchByTagsWithHashtagsAndModel(): 해시태그, 모델 태그로 게시물을 검색한 경우 테스트 - searchByTagsWithHashtagsAndType(): 해시태그, 타입 태그로 게시물을 검색한 경우 테스트 - searchByTagsWithHashtags(): 해시태그로만 게시물을 검색한 경우 테스트 - searchByTagsWithNoResult(): 해시태그, 타입, 모델 태그로 게시물을 검색했는데 아무 결과도 얻지 못한 경우 테스트 * refactor: 변수명 expectedResult를 imagesEightAndSix로 변경 * refactor: 불필요한 로컬변수를 삭제하고, 클래스에 선언된 images 변수를 사용하도록 변경 * test: 좋아요, 좋아요 취소 테스트 코드 작성 (#218) * test: LikeController test * test: LikeService test * test: end of line 추가 * test: TagController 테스트 코드 작성 (#219) * test: TagController 테스트 코드 작성 - searchAllTags(): 모든 태그 검색 테스트 - searchHashtag(): 해시태그 검색 테스트 - getAllTypes(): 차량 종류 전체 조회 테스트 - getAllModels(): 차량 타입 전체 조회 테스트 * refactor: TagServiceTest 클래스의 테스트 코드 리팩토링 * fix: 오타 수정 * test: 게시글 작성/수정 테스트 (#222) * chore: pr병합 * chore: pr 병합 * chore: pr 병합 * test: 게시글 수정 성공 서비스 테스트 작성 * feat: invalidPostAccess 메소드 분리 * test: postService 게시글 수정 테스트 * test: 게시글 수정 실패 서비스 테스트 작성 * test: 팔로우 관련 테스트 코드 작성 (#224) * test: FollowController test * test: FollowService test * fix: 오타 수정 * fix: 글 상세 페이지 api 리턴값 수정 (#225) * fix: 글 상세 페이지 api 리턴값 수정 * rename: hashtags >> hashtag * feat: findHashtagsByPostId 별칭 설정 * docs: 주석 삭제 * feat: 상세 페이지 조회 시 좋아요 여부도 응답 * feat : 상세 페이지 컴포넌트로 분리 (#226) * feat: 메뉴를 누를때마다 메뉴 visible 변하도록 수정 * feat: 내 게시글에서만 수정, 삭제 가능 * feat: 글 상세 페이지 컴포넌트로 분리 * delete: console.log 삭제 * feat: 글 수정 기능 (#227) * feat: 해시태그객체 함수 모듈화 * feat: 해시태그 min-width설정 * feat: post 초기값 상수 분리 * feat: url함수 빈 값일 때 처리 * feat: 수정 시 데이터 받아오도록 수정 * feat: 검색어 인코딩 처리 * feat: div 태그 추가 * feat: postId 받아오는 함수 분리 * feat: 초기값 분리 * feat: post 타입 추가 * fix: 검색어로 쿼리문에 사용되는 특수문자가 사용되는 경우를 처리하기 위해 쿼리문 수정 (#231) '%'가 검색어로 들어올 경우 모든 데이터가 출력되므로, 이를 실제 문자로 인식시키기 위해 쿼리문을 수정하였다. - TagRepository의 쿼리문 수정 - TagService에 로그 출력을 위한 logger 선언 및 사용 - TagServiceTest 테스트 메서드 추가 - searchAllTagsWithNoResult(): 모든 태그 검색 기능 테스트 - 검색 결과가 없는 경우 - searchHashTagWithNoResult(): 해시태그 검색 기능 테스트 - 검색 결과가 없는 경우 * fix: 검색어로 SQL 쿼리문의 특수 문자가 사용되는 경우를 처리하기 위해 쿼리문 2차 수정 (#235) * fix: 검색어로 SQL 쿼리문의 특수 문자가 사용되는 경우를 처리하기 위해 쿼리문 2차 수정 LIKE 절의 와일드 문자는 '%'와 '_'이므로 이 두 문자가 검색어로 들어올 경우를 처리하기 위해 쿼리문을 수정하였다. 와일드 문자를 실제 문자로 인식하기 위해서는 검색어 전체가 아니라 와일드 문자가 들어가는 부분만 '[]'로 감싸야하기 때문에 convertWildCharToRealChar()을 선언하여 와일드 문자가 실제문자로 인식되도록 쿼리문을 다시 수정하였다. - TagRepository의 쿼리문 수정 - convertWildCharToRealChar(): LIKE 절의 와일드 문자 '%'와 '_'가 쿼리문에서 실제 문자로 인식되도록, 파라미터로 들어온 문자열을 수정하여 반환 * feat: convertWildCharToRealChar() 내부 로직 수정 * fix: 로그인, 회원가입 페이지 레이아웃 수정 (#237) * fix: 회원가입 페이지 레이아웃 수정 * fix: 로그인 페이지 레이아웃 수정 * fix: 글 쓴 사람의 닉네임 전달하도록 수정 (#239) * hotfix: test 코드 수정 (#241) * fix: 글 쓴 사람의 닉네임 전달하도록 수정 * hotfix: test코드 수정 * feat: 상세 페이지 연결 (#242) * feat: 글 작성자 누르면 프로필로 이동 * feat: 뒤로가기 버튼 기능 추가 * feat: 이미지 연 * feat: 이미지 연 * refactor: fetch함수 수정 * test: UserRepository test 코드 작성 (#244) * test: UserRepository 클래스 생성 * test: UserRepository test 코드 작성 * hotfix: 좋아요 조회 기능 버그 수정 * fix: TagRepository의 태그 검색 기능에 쓰이는 모든 쿼리문 수정 및 TagRepository 테스트 코드 작성 (#246) * test: TagRepository 테스트 코드 작성 - findHashtagByName(): 태그 이름으로 해시태그 조회 - findHashtagByNameWithNoHashtag(): 태그 이름으로 해시태그 조회 - 조회 결과가 없는 경우 - searchHashtagByPrefix(): 키워드를 접두어로 하여 해시태그를 조회 * fix: TagRepository의 태그 검색 기능에 쓰이는 모든 쿼리문 수정 TagRepository 테스트 코드를 작성하던 중, SQL 쿼리의 LIKE 조건절에 쓰이는 와일드 문자가 검색어에 포함될 경우 제대로 조회가 되지 않는 오류를 발견하여, TagRepository의 쿼리문의 LIKE 조건절에서 ESCAPE 옵션을 사용하도록 수정하였다. - convertWildCharToRealChar() 내부 로직 수정 - TagRepositoryTest 테스트 코드 작성 - searchHashtagByPrefixWithWildCharPercentage(): '%'문자를 접두어로 하여 해시태그를 조회 - searchHashtagByPrefixWithWildCharUnderBar(): '_'를 접두어로 하여 해시태그를 조회 * feat: 글 수정 기능 (#248) * feat: 좋아요/좋아요 취소 기능 구현 (#249) * feat: 좋아요/좋아요 취소 기능 구현 * fix: 타입에러 수정 * Fix : 프로필페이지에서 다른 유저 프로필로 이동할때 state초기화 안되는 버그 (#251) * fix: 프로필 페이지 버그 수정 * fix: 타입 에러 수정 * fix:디테일 페이지 버그 수정 (#252) * Update README.md 배포 아키텍쳐 업로드 * hotfix: 취소 시 뒤로안가는 버그 수정 * Update README.md * fix: 메인 페이지 state 초기화 안되는 버그 수정 (#255) * fix: 이벤트 쌓이는 버그 수정 * fix: 알람 처리 * remove: 로그 제거 * fix: 로그인 상태 로컬 스토리지에 저장 * feat: isLogin API 구현 (#256) * Update README.md * Update README.md * feat: isLogin 모듈 추가/ 페이지간 이벤트 쌓이는 문제 수정 (#260) * feat: isLogin 모듈 추가 * fix: 페이지간 이벤트 쌓이는 문제 수정 * hoxfix: 이벤트 쌓이는 문제 해결 * chore: create_data.sql 작성 (#267) * feat: 글 상세 페이지 게시글 삭제 기능 (#270) * feat: 게시글 삭제 기능 * feat: 게시글 삭제 알림 모달 추가 * desing: 알림 모달 배경색 변경 * delete: 로그, 주석 삭제 * test: FollowRepositoryTest 코드 작성 (#269) * test: FollowRepositoryTest 코드 작성 * test: DisplayName 추가 * test: TagRepositoryTest 테스트 코드 작성 및 리팩토링 (#268) * test: TagRepositoryTest 테스트 코드 작성 및 리팩토링 - findHashtagsByPostId(): 게시물 id로 해시태그 조회 테스트 - findModelByName(): 모델 이름으로 모델 태그 조회 테스트 * refactor: 테스트 이름 변경 * refactor: 불필요한 PostRepository 멤버변수 삭제 * feat: 해시태그 id로 해시태그를 조회하는 메서드 추가 * test: TagRepository 테스트 코드 추가 - addHashtag(): 해시태그 추가 테스트 - addPostHashtag(): 게시물에 해시태그 추가 테스트 - deletePostHashtag(): 게시물에 해시태그 삭제 테스트 * test: ImageRepository 테스트코드 작성 (#271) * test: ImageRepositoryTest 작성중 * refactor: test 코드를 위해 PostRepository의 keyholder 부분 수정 * test: getImageByPostId 테스트 작성 test: getImagesOfRecentPosts 테스트 작성 * test: getImagesOfRecentFollowingPosts 테스트 잓어 * test: findImagesByNickname 테스트 작성 refactor: findImagesByNickname 메소드 sql 예약어 처리 * refactor: Display 작성 * test: image 저장 테스트 작성 * refactor: 안쓰는 메소드 deprecated 처리 * test: Image 수정 테스트 작성 * refactor: 필요없는 코드 삭제 * test: LikeRepository 테스트 코드 추가 (#272) * test: findUserById 유저가 없을 경우 테스트 추가 * test: isLogin api test 코드 작성 * test: LikeRepository test 코드 추가 * refactor: 쓰지 않는 Follow model 클래스 삭제 * test: PostRepository 테스트 코드 작성 (#273) * test: PostRepository의 게시글 추가 테스트 코드 작성 * test: PostRepository의 테스트 코드 추가 * style: 주석 추가 * test: bean 관련 테스트코드 추가 (#274) * test: bean 관련 테스트코드 추가 * refactor: end of line 추가 * Fix: 프로필 페이지 버그 수정 (#275) * fix: 닉네임 수정창 사라질때 비밀번호 수정창 보이는 버그 수정 * fix: 메뉴 아이템이 뒤에 있던 것 수정 * fix: 기존 비밀번호 틀렸을때 오류출력, 기존 비밀번호와 변경할 비밀번호와 중복 체크 * feat: 비밀번호 성공시 알림창 배경 바꿈 * feat: 비밀번호 변경 창에 정보 남아 있는 것 수정 * Update README.md * Fix: 로그인 페이지 버그 (#276) * fix: 로그인, 회원가입 페이지 컨테이너 크기 수정 * fix: 로그인 페이지 비밀번호 오류 체크 * feat: 팔로워, 팔로잉 삭제시 숫자 연동 (#278) * fix: 태그 삭제시 렌더링 안되는 버그 수정 (#281) * Update README.md ERD update * feat: 무한 스크롤을 위한 쿼리 수정 (#284) * refactor: ImageRepository decodeURL 코드 수정 * feat: 무한스크롤을 위한 쿼리 수정 * feat: 초기 postId 설정 로직 추가 * feat: 무한 스크롤을 위한 PostService 로직 수정 (#285) * feat: 태그로 게시물 검색 시, 기존의 index 대신 postId를 받아서, postId를 기준으로 게시물을 조회하도록 수정 무한 스크롤에서 중복 및 누락 데이터 처리를 위해 기존의 index에서 postId를 활용하도록 로직을 수정하였다. - searchByTags(): 파라미터 변수 index를 postId로 이름 변경 - postId가 0일 경우 정수 최대값으로 변경하는 로직 추가 - findImagesOfPostsStartsWithIndex() 메서드 이름을 findImagesOfPostsFromPostId()로 변경 - findImagesOfPostsFromPostId() 로직 변경 - offset 대신 이전 응답으로 보낸 게시글 중 마지막 게시글의 id를 요청 파라미터로 받기 때문에, 현재 조회한 게시글에서 postId보다 작은 아이디를 가진 Post를 찾은 후, 그 post부터 POST_COUNT 만큼의 개수의 이미지를 응답으로 반환한다. * refactor: initPostId()를 사용하여 중복되는 postId 초기화 로직 삭제 * refactor: 파라미터 변수 index를 postId로 이름 변경 * feat: 글 작성페이지 input validation (#286) * feat: 메인 페이지 index -> postId로 변경 (#288) * feat: index postId로 변경 * remove: 로그삭제 * test: postId를 활용한 테스트코드 작성 (#293) * test: getImagesOfRecentPosts Test 수정 * test: getImagesOfRecentFollowingPosts Test 수정 * test: PostServiceTest 수정 * chore: test 이름 변경 * fix: post key 못가져오는 버그 수정 * fix: 메인페이지 버그 수정 (#295) * fix: 해시태그 모달 안뜨는 버그 수정 * Feat: 로고 클릭시 메인으로 * fix: 리스트0일 때 처리 * fix: skeleton안없어지는 버그 수정 * feat : 글 상세 페이지에서 이미지 클릭시 원본 보여주기 (#297) * feat: 이벤트 위임 setup으로 옮김 * feat: 좋아요 애니메이션, 이미지 클릭시 이미지 모달 보여줌 * design: 모델, 종류 폰트 변경 * fix: form 이미지 초기화 안되는 버그 수정 (#298) * chore: setState state 비교 로직 추가 (#301) * chore: setstate 에서 prevstate, nextstate 비교 후 렌더링 * chore:쌍따옴표 따옴표로 변경 * feat: interceptor를 활용해 로그인 여부 처리 (#303) * feat: interceptor 적용중 * feat: interceptor로 로그인여부 확인 처리 구현 * feat: /search api uri 수정 --------- Co-authored-by: jaehunLee-dev * feat: 메인 페이지 위로가는 스크롤 추가 (#304) * feat: 위로가기 버튼 추가 * feat: meta 태그, 파비콘 추가 * Fix: 프로필 페이지 구현 (#306) * feat: home button, 프로필 페이지 새로고침 기능 추가 * fix: 팔로워, 팔로잉 누를시 프로필로 이동하지 않던 버그 수정 * fix: 프로필 페이지, 글 상세 페이지 세션 만료 체크 * fix: 글 상세 페이지 로딩 할떄 undefine 보이는거 수정 * fix: 글 상세 페이지에서 뒤로가기 버튼 보이지 않는 것 수정 (#312) * fix: 태그 버그, 이미지 관련 버그 처리 (#311) * fix: 카테고리 재선택 안되는 버그 수정 * feat: 에러메시지에 따른 alert처리 * feat: 용량에 따른 에러 핸들링 * feat: 이전 데이터 캐싱하여 페이지 이동시 데이터 유지 (#315) * Refactor: 함수 리팩토링 (#316) * fix: 로그인 페이지 pc버전 레이아웃 수정 * feat: clear tag 추가 * feat: 게시물 없을 때 좋아요 순 게시물 보여주는 기능 (#321) * feat: 로그인 시 로컬스토리지 비움 * feat: 좋아요 순 보여주는 로직 추가 * feat: 좋아요 개수 반정규화 진행 구현 (#320) * feat: 최근 일주일간의 팔로우 게시글 조회 (#323) * feat: 최근 일주일간의 팔로우 게시글만 가져오도록 수정 기능 수정에 따라 test sql 수정 * fix: sql 버그 수정 * feat: 글 상세 페이지에서 태그 누르면 메인페이지에서 필터링 된 게시글 보여줌 (#324) * feat: 글 상세 페이지에서 태그 누르면 메인페이지에서 필터링 된 게시글 보여줌 * delete: 콘솔로그 삭제 * feat: 최근 일주일간의 인기글 조회 (#325) * feat: 인기글 조회 API 구현 기존에는 로그인한 사용자의 경우 메인페이지에서 팔로우한 사람의 게시글만 보이도록 하였는데, 팔로우한 사람이 없는 신규 사용자의 경우 아무 게시글도 보이지 않는다. 이를 개선하기 위해 로그인한 사용자의 경우 메인페이지에서 팔로우한 사람의 게시글을 다 보면 인기글이 보이도록 변경하였다. 인기글의 기준은 일주일 내에 작성한 게시글 중 좋아요가 많은 순서이다. * test: PostController 인기글 조회 테스트 * test: PostService 인기글 조회 테스트 * test: PostService 인기글 조회 테스트 수정 * test: ImageRepository 인기글 조회 테스트 작성 * feat: api 호출 최소화하는 로직 추가 (#331) * fix: 인기글 조회 로직 수정 (#330) - PostRepository의 findPopularPostsDuringWeek() 메서드 추가 - 최근 일주일동안 작성한 게시물을 좋아요가 많은 순서대로 정렬한 게시물 리스트 반환 - PostService의 getPopularPostsDuringWeek() 메서드 로직 수정 - postRepository.findPopularPostsDuringWeek()를 호출하여 가져온 게시물 리스트에서, 프론트가 보낸 게시물 id에 해당하는 게시물을 찾아서 그 다음의 게시물들의 이미지를 반환 - ImageRepository의 getImagesOfPopularPostsDuringWeek() 메서드 삭제 * hoxfix: 로컬스토리지 비우는 로직 추가 * fix: image modal uri 수정 (#335) * hotfix: 로컬스토리지 버그 수정 * remove: 로컬스토리지 기능 삭제.. * Update README.md --------- Co-authored-by: jhchoi57 Co-authored-by: Dongja <43432783+DongjaJ@users.noreply.github.com> Co-authored-by: 이재훈 <86291473+jaehunLee-dev@users.noreply.github.com> Co-authored-by: Dongja Co-authored-by: jaehunLee-dev Co-authored-by: Soomin-Lim Co-authored-by: jhchoi57 <46276276+jhchoi57@users.noreply.github.com> Co-authored-by: Soomin Lim <63943319+Soomin-Lim@users.noreply.github.com> --- README.md | 4 +++- frontend/carbook/index.html | 2 +- .../carbook/src/components/Home/PostList.ts | 17 ++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 6a3efd2..e1ad0fa 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,9 @@
-## 📌 프로토타입 + +## 📌 화면 구성 +
diff --git a/frontend/carbook/index.html b/frontend/carbook/index.html index b12f2d7..8a75983 100644 --- a/frontend/carbook/index.html +++ b/frontend/carbook/index.html @@ -1,7 +1,7 @@ - + diff --git a/frontend/carbook/src/components/Home/PostList.ts b/frontend/carbook/src/components/Home/PostList.ts index 21c7f2b..c89d086 100644 --- a/frontend/carbook/src/components/Home/PostList.ts +++ b/frontend/carbook/src/components/Home/PostList.ts @@ -5,8 +5,7 @@ import { tagStore } from '@/store/tagStore'; import { getClosest, qs } from '@/utils'; import isLogin from '@/utils/isLogin'; import { push } from '@/utils/router/navigate'; -import { getInitPostList, getPostKey, getSearchUrl } from './helper'; - +import { getInitPostList, getSearchUrl } from './helper'; export default class PostList extends Component { observer: any; @@ -70,20 +69,20 @@ export default class PostList extends Component { async fetchImages() { const { index, isLike } = this.state; - const key = getPostKey(index, isLike); - const prevImage = - JSON.parse(localStorage.getItem('postList') as string) || {}; + // const key = getPostKey(index, isLike); + // const prevImage = + // JSON.parse(localStorage.getItem('postList') as string) || {}; this.setState({ isLoading: true, isInit: false }); const url = getSearchUrl(index, isLike); try { - const res = prevImage[key] || (await basicAPI.get(url)); + const res = await basicAPI.get(url); const { images, login, nickname } = res.data; - const newKey = getPostKey(this.state.index, isLike); - prevImage[newKey] = res; - localStorage.setItem('postList', JSON.stringify(prevImage)); + // const newKey = getPostKey(this.state.index, isLike); + // prevImage[newKey] = res; + // localStorage.setItem('postList', JSON.stringify(prevImage)); const lastImage = images[images.length - 1];