Skip to content

Commit

Permalink
Merge pull request #131 from Re-4aliens/develop
Browse files Browse the repository at this point in the history
 2024-07-01 [Release Note]
  • Loading branch information
suhyun0918 authored Jul 1, 2024
2 parents 1f7aadf + 5cd9231 commit 5aa1e22
Show file tree
Hide file tree
Showing 15 changed files with 57 additions and 39 deletions.
9 changes: 3 additions & 6 deletions src/main/java/com/aliens/backend/auth/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.aliens.backend.member.domain.MatchingStatus;
import com.aliens.backend.member.controller.dto.EncodedSignUp;
import com.aliens.backend.member.sevice.SymmetricKeyEncoder;
import com.aliens.backend.notification.domain.FcmToken;
import com.aliens.backend.uploader.dto.S3File;
import jakarta.persistence.*;

Expand Down Expand Up @@ -54,15 +53,13 @@ public class Member {
private List<Token> tokens = new ArrayList<>();

@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
@JoinColumn(name = "imageId")
@JoinColumn(name = "memberImageId")
private MemberImage memberImage;

@OneToOne(mappedBy = "member", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "memberInfoId")
private MemberInfo memberInfo;

@OneToOne(mappedBy = "member", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private FcmToken fcmToken;

protected Member() {
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,42 +43,42 @@ public SuccessResponse<?> createBoard(@Login final LoginMember loginMember,
}

@GetMapping
public SuccessResponse<List<BoardResponse>> getAllBoards(@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable) {
public SuccessResponse<List<BoardResponse>> getAllBoards(@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) Pageable pageable) {
return SuccessResponse.of(BoardSuccess.GET_ALL_BOARDS_SUCCESS,
boardReadService.getBoardPage(pageable));
}

@GetMapping("/category")
public SuccessResponse<List<BoardResponse>> getAllBoardsWithCategory(@RequestParam final String category,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) {
@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) final Pageable pageable) {
return SuccessResponse.of(BoardSuccess.GET_ALL_BOARDS_WITH_CATEGORY_SUCCESS,
boardReadService.getBoardPageWithCategory(category,pageable));
}

@GetMapping("/search")
public SuccessResponse<List<BoardResponse>> searchAllBoardPage(@RequestParam("search-keyword") final String searchKeyword,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) {
@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) final Pageable pageable) {
return SuccessResponse.of(BoardSuccess.SEARCH_ALL_BOARDS_SUCCESS,
boardReadService.searchBoardPageWithKeyword(searchKeyword,pageable));
}

@GetMapping("/announcements")
public SuccessResponse<List<BoardResponse>> getAllAnnouncementBoards(@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) {
public SuccessResponse<List<BoardResponse>> getAllAnnouncementBoards(@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) final Pageable pageable) {
return SuccessResponse.of(BoardSuccess.GET_ALL_ANNOUNCEMENT_BOARDS_SUCCESS,
boardReadService.getAnnouncePage(pageable));
}

@GetMapping("/writes")
public SuccessResponse<List<BoardResponse>> getPageMyBoards(@Login LoginMember loginMember,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) {
@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) final Pageable pageable) {
return SuccessResponse.of(BoardSuccess.GET_MY_BOARD_PAGE_SUCCESS,
boardReadService.getMyBoardPage(loginMember, pageable));
}

@GetMapping("/category/search")
public SuccessResponse<List<BoardResponse>> searchBoardsWithCategory(@RequestParam("search-keyword") final String searchKeyword,
@RequestParam("category") final String category,
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) {
@PageableDefault(sort = "boardId", direction = Sort.Direction.DESC) final Pageable pageable) {
return SuccessResponse.of(BoardSuccess.SEARCH_BOARD_WITH_CATEGORY_SUCCESS,
boardReadService.searchBoardPageWithKeywordAndCategory(searchKeyword, category, pageable));
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/aliens/backend/board/domain/Board.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
import com.aliens.backend.board.domain.enums.BoardCategory;
import jakarta.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.Instant;
import java.util.ArrayList;
import java.util.List;

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Board {

@Id
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/aliens/backend/board/domain/Comment.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
import com.aliens.backend.board.domain.enums.CommentType;
import jakarta.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.Instant;

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Comment {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private com.google.firebase.messaging.Message createFcmMessage(Message message)
}

private String findFcmTokenByMember(Member receiver) {
return fcmTokenRepository.findByMember(receiver).getToken();
return fcmTokenRepository.findByMember(receiver).get().getToken();
}

private void updateReadState(Long chatRoomId, Long readBy) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.aliens.backend.member.domain;

import com.aliens.backend.auth.domain.Member;
import com.aliens.backend.uploader.dto.S3File;
import jakarta.persistence.*;

Expand All @@ -17,10 +16,6 @@ public class MemberImage {
@Column
String url;

@OneToOne
@JoinColumn(name = "memberId")
private Member member;

protected MemberImage() {
}

Expand Down
24 changes: 17 additions & 7 deletions src/main/java/com/aliens/backend/member/domain/MemberInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import com.aliens.backend.member.controller.dto.EncodedMember;
import com.aliens.backend.member.controller.dto.EncodedMemberPage;
import jakarta.persistence.*;
import org.springframework.data.domain.Persistable;

@Entity
public class MemberInfo {
public class MemberInfo implements Persistable<Long> {

@Id
@Column(name = "memberInfoId")
private Long id;

@MapsId
@OneToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
@JoinColumn(name = "memberId")
private Member member;

@Column
private String mbti;

Expand All @@ -34,7 +30,7 @@ protected MemberInfo() {

public static MemberInfo of(EncodedMember request, Member member) {
MemberInfo memberInfo = new MemberInfo();
memberInfo.member =member;
memberInfo.id = member.getId();
memberInfo.gender = request.gender();
memberInfo.mbti = request.mbti();
memberInfo.birthday = request.birthday();
Expand All @@ -53,4 +49,18 @@ public void changeMBTI(final String newMBTI) {
public EncodedMemberPage getMemberPage() {
return new EncodedMemberPage(mbti,gender,birthday,aboutMe);
}

@Override
public Long getId() {
return id;
}

@Override
public boolean isNew() {
return true;
}

public void setId(Long id) {
this.id = id;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import com.aliens.backend.member.controller.dto.request.SignUpRequest;
import com.aliens.backend.member.domain.*;
import com.aliens.backend.member.domain.repository.MemberInfoRepository;
import com.aliens.backend.notification.domain.FcmToken;
import com.aliens.backend.uploader.AwsS3Uploader;
import com.aliens.backend.uploader.dto.S3File;
import org.springframework.context.ApplicationEventPublisher;
Expand Down Expand Up @@ -64,14 +63,15 @@ public MemberInfoService(final AwsS3Uploader uploader,
public String signUp(final SignUpRequest request, final MultipartFile profileImage) {
checkEmail(request.email());

MemberImage memberImage = saveImage(profileImage);
MemberImage memberImage = saveImageToS3(profileImage);

Member member = getMemberEntity(request, memberImage);
Member member = saveMemberEntity(request, memberImage);

MemberInfo memberInfo = getMemberInfoEntity(request, member);
member.putMemberInfo(memberInfo);

memberInfoRepository.save(memberInfo);
memberInfo = memberInfoRepository.save(memberInfo);

member.putMemberInfo(memberInfo);

return MemberResponse.SIGN_UP_SUCCESS.getMessage();
}
Expand All @@ -86,7 +86,7 @@ private void checkEmail(final String email) {
}
}

private MemberImage saveImage(final MultipartFile profileImage) {
private MemberImage saveImageToS3(final MultipartFile profileImage) {
if (profileImage == null || profileImage.isEmpty()) {
return MemberImage.from(new S3File(s3UploadProperties.getDefaultFileName(),
s3UploadProperties.getDefaultFileURL()));
Expand All @@ -96,9 +96,9 @@ private MemberImage saveImage(final MultipartFile profileImage) {
return MemberImage.from(uploadedFile);
}

private Member getMemberEntity(final SignUpRequest request, final MemberImage memberImage) {
private Member saveMemberEntity(final SignUpRequest request, final MemberImage memberImage) {
EncodedSignUp encodedSignUp = encodeForMember(request);
return Member.of(encodedSignUp, memberImage);
return memberRepository.save(Member.of(encodedSignUp, memberImage));
}

private EncodedSignUp encodeForMember(final SignUpRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface FcmTokenRepository extends JpaRepository<FcmToken, Long> {
FcmToken findByMember(Member member);
Optional<FcmToken> findByMember(Member member);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import com.aliens.backend.notification.controller.dto.NotificationResponse;
import jakarta.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.Instant;

@EntityListeners(AuditingEntityListener.class)
@Entity
public class Notification {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public NotificationService(final NotificationRepository notificationRepository,
@Transactional
public void registerFcmToken(final LoginMember loginMember, final String fcmToken) {
Member member = getMember(loginMember.memberId());
Optional<FcmToken> optionalFcmToken = fcmTokenRepository.findById(loginMember.memberId());
Optional<FcmToken> optionalFcmToken = fcmTokenRepository.findByMember(member);

if (optionalFcmToken.isPresent()) {
FcmToken fcmTokenEntity = optionalFcmToken.get();
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/com/aliens/backend/uploader/AwsS3Uploader.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class AwsS3Uploader {
private static final String PNJ_FILE_EXTENSION = "png";
private static final String JPEG_FILE_EXTENSION = "jpeg";
private static final String GIF_FILE_EXTENSION = "gif";
private static final String JPG_FILE_EXTENSION = "jpg";
private static final int MAX_UPLOADS = 2;
private static final long MAX_IMAGE_SIZE = 10 * 1024 * 1024; // 10 MB

Expand Down Expand Up @@ -75,7 +76,9 @@ private void checkFilesImage(final MultipartFile multipartFile) {
String extension = StringUtils.getFilenameExtension(multipartFile.getOriginalFilename());
if (!extension.equalsIgnoreCase(PNJ_FILE_EXTENSION)
&& !extension.equalsIgnoreCase(JPEG_FILE_EXTENSION)
&& !extension.equalsIgnoreCase(GIF_FILE_EXTENSION)) {
&& !extension.equalsIgnoreCase(GIF_FILE_EXTENSION)
&& !extension.equalsIgnoreCase(JPG_FILE_EXTENSION)
) {
throw new RestApiException(BoardError.POST_IMAGE_ERROR);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
spring:
jpa:
show_sql: true
show_sql: false
hibernate:
ddl-auto: none
naming:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private MockMultipartFile createMultipartFile() {
@DisplayName("API - 전체 게시글 조회")
void getAllBoardsTest() throws Exception {
// Given
final Pageable pageable = PageRequest.of(0, 10, Sort.by(Sort.Direction.DESC, "createdAt"));
final Pageable pageable = PageRequest.of(0, 10, Sort.by(Sort.Direction.DESC, "boardId"));
final List<BoardResponse> boardResponses = List.of(
createBoardResponse(),
createBoardResponse());
Expand Down
7 changes: 6 additions & 1 deletion src/test/java/com/aliens/backend/global/DummyGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.aliens.backend.auth.controller.dto.LoginMember;
import com.aliens.backend.auth.domain.Member;
import com.aliens.backend.auth.domain.Token;
import com.aliens.backend.auth.domain.repository.MemberRepository;
import com.aliens.backend.auth.domain.repository.TokenRepository;
import com.aliens.backend.auth.service.PasswordEncoder;
import com.aliens.backend.auth.service.TokenProvider;
Expand Down Expand Up @@ -50,6 +51,7 @@

@Component
public class DummyGenerator {
@Autowired MemberRepository memberRepository;
@Autowired MatchingApplicationService matchingApplicationService;
@Autowired MemberInfoRepository memberInfoRepository;
@Autowired MatchingRoundRepository matchingRoundRepository;
Expand Down Expand Up @@ -140,7 +142,7 @@ private MemberImage makeImage() {
private Member makeMember(String email, MemberImage memberImage) {
String encodedPassword = passwordEncoder.encrypt(GIVEN_PASSWORD);
EncodedSignUp signUp = new EncodedSignUp(GIVEN_NAME, email, encodedPassword, GIVEN_NATIONALITY);
return Member.of(signUp, memberImage);
return memberRepository.save(Member.of(signUp, memberImage));
}

private void saveAsMemberInfo(final Member member) {
Expand All @@ -151,6 +153,9 @@ private void saveAsMemberInfo(final Member member) {

MemberInfo memberInfo = MemberInfo.of(encodedRequest, member);
memberInfoRepository.save(memberInfo);

member.putMemberInfo(memberInfo);
memberRepository.save(member);
}

// MultipartFile 생성 메서드
Expand Down

0 comments on commit 5aa1e22

Please sign in to comment.