feat: 댓글 구조 변경

작성자 표시를 위해 CommentResponse에 isPostAuthor 필드 추가
This commit is contained in:
pwy3282040@msecure.co
2025-12-27 00:14:57 +09:00
parent ef6ffa5670
commit 884853586d
9 changed files with 69 additions and 31 deletions

View File

@@ -49,18 +49,38 @@ class PostService(
*/
@Transactional
fun createPost(request: PostSaveRequest, email: String): Long {
if (postRepository.existsBySlug(request.slug)) { throw IllegalArgumentException("이미 존재하는 Slug입니다.") }
val member = memberRepository.findByEmail(email) ?: throw IllegalArgumentException("회원 없음")
val member = memberRepository.findByEmail(email)
?: throw IllegalArgumentException("회원 없음")
val category = request.categoryId?.let { categoryRepository.findByIdOrNull(it) }
val rawSlug = if (!request.slug.isNullOrBlank()) {
request.slug
} else {
request.title.trim().replace("\\s+".toRegex(), "-").lowercase()
}
// (2) DB 중복 검사: 중복되면 -1, -2, -3... 붙여나감
var uniqueSlug = rawSlug
var count = 1
while (postRepository.existsBySlug(uniqueSlug)) {
uniqueSlug = "$rawSlug-$count"
count++
}
// ---------------------------------------------------------
// 2. 게시글 객체 생성 (uniqueSlug 사용)
val post = Post(
title = request.title,
content = request.content,
slug = request.slug,
slug = uniqueSlug, // 👈 중복 처리된 슬러그
member = member,
category = category
)
// 3. 태그 처리 (작성하신 로직 그대로 활용)
// 리스트를 순회하며 없으면 저장(save), 있으면 조회(find)
val postTags = request.tags.map { tagName ->
val tag = tagRepository.findByName(tagName)
?: tagRepository.save(Tag(name = tagName))
@@ -68,6 +88,7 @@ class PostService(
PostTag(post = post, tag = tag)
}
// 연관관계 편의 메서드 사용 (Post 내부에 구현되어 있다고 가정)
post.addTags(postTags)
return postRepository.save(post).id!!