Skip to content

Commit

Permalink
[#134] feat: 실패 기록 삭제
Browse files Browse the repository at this point in the history
  • Loading branch information
kdomo committed Nov 2, 2023
1 parent 1a252ca commit d2a4624
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,9 @@ public Failure queryFailure(Long failureId) {
.findById(failureId)
.orElseThrow(() -> FailureNotFoundException.EXCEPTION);
}

@Override
public void delete(Failure failure) {
failureRepository.delete(failure);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.todaysfail.common.BaseTimeEntity;
import com.todaysfail.config.converter.LongArrayConverter;
import com.todaysfail.domains.failure.exception.FailureOwnedByUserException;
import com.todaysfail.domains.failure.exception.FailureNotOwnedByUserException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -57,9 +57,8 @@ public void like() {
}

public void validateOwnership(Long userId) {
// 본인이 생성 한 실패 기록일 경우
if (this.userId.equals(userId)) {
throw FailureOwnedByUserException.EXCEPTION;
if (!this.userId.equals(userId)) {
throw FailureNotOwnedByUserException.EXCEPTION;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public enum FailureErrorCode implements BaseErrorCode {
FAILURE_DATE_IS_FUTURE(NOT_FOUND, "FAILURE_400_2", "입력 한 날짜가 미래일 수 없습니다."),

@ExplainError("본인이 생성한 실패 기록 입니다.")
FAILURE_OWNED_BY_USER(BAD_REQUEST, "FAILURE_400_3", "본인이 생성한 실패 기록 입니다."),
FAILURE_NOT_OWNED_BY_USER(BAD_REQUEST, "FAILURE_400_3", "본인이 생성한 실패 기록이 아닙니다."),
;

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

import com.todaysfail.common.exception.TodaysFailCodeException;

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

public FailureNotOwnedByUserException() {
super(FailureErrorCode.FAILURE_NOT_OWNED_BY_USER);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ public interface FailureCommandPort {
Failure save(Failure failure);

Failure queryFailure(Long failureId);

void delete(Failure failure);
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ public Failure register(final Failure failure, Category category, List<Tag> tags
@RedissonLock(lockName = "실패좋아요", identifier = "failureId")
public void likeFailure(Long userId, Long failureId) {
Failure failure = failureCommandPort.queryFailure(failureId);
failure.validateOwnership(userId);
failure.like();
failureLikeQueryPort.checkAlreadyLiked(userId, failureId);
failureLikeCommandPort.save(FailureLike.of(userId, failureId));
Expand Down Expand Up @@ -71,4 +70,10 @@ private void validateFailureDate(LocalDate date) {
throw FutureFailureDateException.EXCEPTION;
}
}

public void deleteFailure(final Long failureId, final Long userId) {
Failure failure = failureCommandPort.queryFailure(failureId);
failure.validateOwnership(userId);
failureCommandPort.delete(failure);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.todaysfail.api.web.failure.dto.response.FailureMonthlyDailyStatusResponse;
import com.todaysfail.api.web.failure.dto.response.FailureResponse;
import com.todaysfail.api.web.failure.usecase.FailureByCategoryQueryUseCase;
import com.todaysfail.api.web.failure.usecase.FailureDeleteUseCase;
import com.todaysfail.api.web.failure.usecase.FailureFeedQueryUseCase;
import com.todaysfail.api.web.failure.usecase.FailureLikeUseCase;
import com.todaysfail.api.web.failure.usecase.FailureModifyUseCase;
Expand All @@ -23,6 +24,7 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -44,6 +46,7 @@ public class FailureController {
private final FailureLikeUseCase failureLikeUseCase;
private final FailureMonthlyDailyStatusUseCase failureMonthlyDailyStatusUseCase;
private final FailureByCategoryQueryUseCase failureByCategoryQueryUseCase;
private final FailureDeleteUseCase failureDeleteUseCase;

@Operation(summary = "실패 등록")
@PostMapping
Expand All @@ -58,6 +61,12 @@ public FailureResponse modifyFailure(
return failureModifyUseCase.execute(failureId, request);
}

@Operation(summary = "실패 삭제")
@DeleteMapping("/{failureId}")
public void deleteFailure(@PathVariable Long failureId) {
failureDeleteUseCase.execute(failureId);
}

@Operation(summary = "피드")
@GetMapping("/feed")
public SliceResponse<FailureResponse> queryFeed(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.todaysfail.api.web.failure.usecase;

import com.todaysfail.common.annotation.UseCase;
import com.todaysfail.config.security.SecurityUtils;
import com.todaysfail.domains.failure.service.FailureDomainService;
import lombok.RequiredArgsConstructor;

@UseCase
@RequiredArgsConstructor
public class FailureDeleteUseCase {
private final FailureDomainService failureDomainService;

public void execute(final Long failureId) {
final Long userId = SecurityUtils.getCurrentUserId();
failureDomainService.deleteFailure(failureId, userId);
}
}

0 comments on commit d2a4624

Please sign in to comment.