Skip to content

Commit

Permalink
[#125] feat: 태그 이름 최대길이 Validation 추가 (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdomo committed Oct 17, 2023
1 parent ecac410 commit 727a360
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.todaysfail.domains.tag.domain;

import com.todaysfail.common.BaseTimeEntity;
import com.todaysfail.domains.tag.exception.TagNameLengthExceedException;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
Expand All @@ -18,6 +19,8 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class Tag extends BaseTimeEntity {
private static final int MAX_TAG_NAME_LENGTH = 23;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tag_id")
Expand All @@ -34,4 +37,10 @@ public static Tag register(String tagName) {
public void increaseUsedCount() {
this.usedCount++;
}

public void validateTagNameLength() {
if (this.tagName.length() > MAX_TAG_NAME_LENGTH) {
throw TagNameLengthExceedException.EXCEPTION;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ public enum TagErrorCode implements BaseErrorCode {
TAG_COUNT_EXCEED(TodaysFailConst.BAD_REQUEST, "TAG_400_1", "허용된 최대 태그 개수를 초과했습니다."),

@ExplainError("태그를 찾을 수 없습니다.")
TAG_NOT_FOUND(TodaysFailConst.BAD_REQUEST, "TAG_400_2", "태그를 찾을 수 없습니다.");
TAG_NOT_FOUND(TodaysFailConst.BAD_REQUEST, "TAG_400_2", "태그를 찾을 수 없습니다."),

@ExplainError("태그 이름의 길이 제한을 초과했습니다.")
TAG_NAME_LENGTH_EXCEED(TodaysFailConst.BAD_REQUEST, "TAG_400_3", "태그 이름의 길이 제한을 초과했습니다."),
;

private Integer status;
private String code;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.todaysfail.domains.tag.exception;

import com.todaysfail.common.exception.TodaysFailCodeException;

public class TagNameLengthExceedException extends TodaysFailCodeException {
public static final TodaysFailCodeException EXCEPTION = new TagNameLengthExceedException();

public TagNameLengthExceedException() {
super(TagErrorCode.TAG_NAME_LENGTH_EXCEED);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,28 @@

import com.todaysfail.aop.lock.RedissonLock;
import com.todaysfail.domains.tag.domain.Tag;
import com.todaysfail.domains.tag.port.TagCommandPort;
import java.util.List;
import java.util.Set;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
public class TagDomainService {
private final TagCommandPort tagCommandPort;

@RedissonLock(lockName = "태그사용수증가", identifier = "tag")
public Tag increaseUsedCount(Tag tag) {
tag.increaseUsedCount();
return tag;
}

@Transactional
public List<Tag> saveAndRetrieveAllTags(Set<String> tagNameSet) {
List<Tag> tags = tagCommandPort.saveAndRetrieveAllTags(tagNameSet);
tags.stream().forEach(tag -> tag.validateTagNameLength());
return tags;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,24 @@
import com.todaysfail.domains.failure.domain.Failure;
import com.todaysfail.domains.failure.service.FailureDomainService;
import com.todaysfail.domains.tag.domain.Tag;
import com.todaysfail.domains.tag.port.TagCommandPort;
import com.todaysfail.domains.tag.service.TagDomainService;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@UseCase
@RequiredArgsConstructor
public class FailureRegisterUseCase {
private final FailureMapper failureMapper;
private final TagCommandPort tagCommandPort;
private final CategoryQueryPort categoryQueryPort;
private final FailureDomainService failureDomainService;
private final TagDomainService tagDomainService;

@Transactional
public FailureResponse execute(FailureRegisterRequest request) {
Long currentUserId = SecurityUtils.getCurrentUserId();
List<Tag> tags = tagCommandPort.saveAndRetrieveAllTags(request.tagNameSet());
List<Tag> tags = tagDomainService.saveAndRetrieveAllTags(request.tagNameSet());
Category category = categoryQueryPort.queryCategory(request.categoryId());
Failure failure =
Failure.builder()
Expand Down

0 comments on commit 727a360

Please sign in to comment.