Skip to content

Commit 2453d71

Browse files
authored
[RELEASE] v1.1.0
[RELEASE] v1.1.0
2 parents 982f9d7 + 7b0c0d8 commit 2453d71

19 files changed

Lines changed: 273 additions & 59 deletions

File tree

.github/workflows/cicd-prod.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ jobs:
106106
sudo docker run -d --name redis --network spoony-network redis
107107
fi
108108
109+
echo "📂 로그 디렉터리 준비"
110+
sudo mkdir -p /var/log/spoony/archive
111+
sudo chmod 775 /var/log/spoony /var/log/spoony/archive
112+
109113
echo "📥 최신 이미지 가져오기"
110114
sudo docker pull sumin317/spoony-prod:latest
111115

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,4 @@ Temporary Items
7979

8080
# App runtime data
8181
app/
82+

src/main/java/com/spoony/spoony_server/adapter/dto/user/response/ProfileImageResponseDTO.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.spoony.spoony_server.adapter.dto.user.response;
22

33
import com.spoony.spoony_server.domain.user.ProfileImage;
4+
import com.spoony.spoony_server.global.support.ProfileCdn;
45

56
public record ProfileImageResponseDTO(
67
int imageLevel,
@@ -10,7 +11,7 @@ public record ProfileImageResponseDTO(
1011
boolean isUnlocked
1112
) {
1213
public static ProfileImageResponseDTO of(ProfileImage profileImage, boolean isUnlocked) {
13-
String imageUrl = "https://www.spoony-prod.o-r.kr/profile-images/" + profileImage.getImage();
14+
String imageUrl = ProfileCdn.url(profileImage.getImage());
1415
return new ProfileImageResponseDTO(
1516
profileImage.getImageLevel(),
1617
profileImage.getSpoonName(),

src/main/java/com/spoony/spoony_server/adapter/dto/user/response/UserBlockResponseDTO.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.spoony.spoony_server.adapter.dto.user.response;
22

33
import com.spoony.spoony_server.domain.user.ProfileImage;
4+
import com.spoony.spoony_server.global.support.ProfileCdn;
45

56
public record UserBlockResponseDTO (
67
Long userId,
@@ -12,7 +13,7 @@ public record UserBlockResponseDTO (
1213
) {
1314
public static UserBlockResponseDTO of(Long currentUserId, Long userId, String username, String regionName, boolean isBlocked, int imageLevel) {
1415
ProfileImage profileImage = ProfileImage.fromLevel(imageLevel);
15-
String profileImageUrl = "https://www.spoony-prod.o-r.kr/profile-images/" + profileImage.getImage();
16+
String profileImageUrl = ProfileCdn.url(profileImage.getImage());
1617
boolean isMine = currentUserId.equals(userId); // 현재 유저와 같은지 비교
1718

1819
return new UserBlockResponseDTO(

src/main/java/com/spoony/spoony_server/adapter/dto/user/response/UserResponseDTO.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.spoony.spoony_server.domain.user.Platform;
44
import com.spoony.spoony_server.domain.user.ProfileImage;
5+
import com.spoony.spoony_server.global.support.ProfileCdn;
56

67
import java.time.LocalDateTime;
78

@@ -34,7 +35,7 @@ public static UserResponseDTO of(
3435
int profileImageLevel
3536
) {
3637
ProfileImage profileImage = ProfileImage.fromLevel(profileImageLevel);
37-
String profileImageUrl = "https://www.spoony-prod.o-r.kr/profile-images/" + profileImage.getImage();
38+
String profileImageUrl = ProfileCdn.url(profileImage.getImage());
3839

3940
return new UserResponseDTO(
4041
userId,

src/main/java/com/spoony/spoony_server/adapter/dto/user/response/UserSimpleResponseDTO.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.spoony.spoony_server.adapter.dto.user.response;
22

33
import com.spoony.spoony_server.domain.user.ProfileImage;
4+
import com.spoony.spoony_server.global.support.ProfileCdn;
45

56
public record UserSimpleResponseDTO (
67
Long userId,
@@ -12,7 +13,7 @@ public record UserSimpleResponseDTO (
1213
) {
1314
public static UserSimpleResponseDTO of(Long currentUserId, Long userId, String username, String regionName, boolean isFollowing, int imageLevel) {
1415
ProfileImage profileImage = ProfileImage.fromLevel(imageLevel);
15-
String profileImageUrl = "https://www.spoony-prod.o-r.kr/profile-images/" + profileImage.getImage();
16+
String profileImageUrl = ProfileCdn.url(profileImage.getImage());
1617
boolean isMine = currentUserId.equals(userId); // 현재 유저와 같은지 비교
1718

1819
return new UserSimpleResponseDTO(

src/main/java/com/spoony/spoony_server/adapter/in/web/post/PostController.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public class PostController {
3737
private final PostDeleteUseCase postDeleteUseCase;
3838
private final PostUpdateUseCase postUpdateUseCase;
3939
private final PostSearchUseCase postSearchUseCase;
40-
private final ApplicationEventPublisher eventPublisher;
4140

4241
@GetMapping("/{postId}")
4342
@Operation(summary = "게시물 조회 API", description = "특정 게시물의 상세 정보를 조회하는 API")
@@ -82,11 +81,7 @@ public ResponseEntity<ResponseDTO<Void>> createPost(
8281
photoUrlList
8382
);
8483

85-
PostCreatedEvent postCreatedEvent = postCreateUseCase.createPost(command);
86-
87-
// Event 발행
88-
System.out.println("🔥 이벤트 발행 스레드: " + Thread.currentThread().getName());
89-
eventPublisher.publishEvent(postCreatedEvent);
84+
postCreateUseCase.createPost(command);
9085

9186
return ResponseEntity.ok(ResponseDTO.success(null));
9287
}

src/main/java/com/spoony/spoony_server/adapter/out/persistence/post/PostPersistenceAdapter.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.transaction.annotation.Transactional;
3232

3333
import java.util.List;
34+
import java.util.Optional;
3435
import java.util.stream.Collectors;
3536

3637
@Adapter
@@ -126,7 +127,7 @@ public Long savePost(Post post) {
126127
.cons(post.getCons())
127128
.build();
128129

129-
postRepository.save(postEntity);
130+
postRepository.saveAndFlush(postEntity);
130131

131132
return postEntity.getPostId();
132133
}
@@ -339,4 +340,20 @@ public List<Post> findPostsByUserId(Long userId, int page, int size) {
339340
public int countPostsByUserId(Long userId) {
340341
return postRepository.countByUserId(userId);
341342
}
343+
344+
@Override
345+
public boolean insertScoopIfAbsent(Long userId, Long postId) {
346+
return scoopPostRepository.insertIfAbsent(userId, postId) == 1;
347+
}
348+
349+
@Override
350+
public void deleteScoop(Long userId, Long postId) {
351+
scoopPostRepository.deleteOne(userId, postId);
352+
}
353+
354+
@Override
355+
public Optional<Long> findPostIdByUserAndPlace(Long userId, Long placeId) {
356+
return postRepository.findIdByUserAndPlace(userId, placeId);
357+
}
358+
342359
}

src/main/java/com/spoony/spoony_server/adapter/out/persistence/post/db/PostEntity.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@
2323
@Getter
2424
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2525
@EntityListeners(AuditingEntityListener.class)
26-
@Table(name = "post")
26+
@Table(name = "post",
27+
uniqueConstraints = {
28+
@UniqueConstraint(
29+
name = "ux_post_user_place",
30+
columnNames = {"user_id", "place_id"}
31+
)
32+
}
33+
)
2734
@SQLRestriction("is_deleted = false")
2835
public class PostEntity {
2936
@Id

src/main/java/com/spoony/spoony_server/adapter/out/persistence/post/db/PostRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,7 @@ Long countByUser_UserId(@Param("userId") Long userId,
4545

4646
@Query(value = "SELECT COUNT(*) FROM post WHERE is_deleted = true", nativeQuery = true)
4747
long countDeletedPosts();
48+
49+
@Query("select p.postId from PostEntity p " + "where p.user.userId = :userId " + "and p.place.placeId = :placeId")
50+
Optional<Long> findIdByUserAndPlace(@Param("userId") Long userId, @Param("placeId") Long placeId);
4851
}

0 commit comments

Comments
 (0)