Skip to content
1 change: 1 addition & 0 deletions src/main/java/com/pickyfy/pickyfy/PickyfyApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

// TODO: 비동기 처리를 위한 @EnableAsync 활성화 필요
@SpringBootApplication
@EnableJpaAuditing
public class PickyfyApplication {
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/pickyfy/pickyfy/common/AllFieldsNotNull.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.pickyfy.pickyfy.common;

import com.pickyfy.pickyfy.common.util.AllFieldsNotNullValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import jakarta.validation.constraints.NotNull;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {AllFieldsNotNullValidator.class})
@NotNull
public @interface AllFieldsNotNull {
String message() default "모든 필드는 not Null";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.pickyfy.pickyfy.common.util;

import com.pickyfy.pickyfy.common.AllFieldsNotNull;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.lang.reflect.Field;

public class AllFieldsNotNullValidator implements ConstraintValidator<AllFieldsNotNull, Object> {

@Override
public boolean isValid(Object object, ConstraintValidatorContext context){
if (object == null) {
return false; // 클래스 자체가 null이면 false 반환
}

// 클래스에 선언된 모든 필드 가져와서 순회하고 null 검사
for (Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true); // private, protected 접근자 붙었더라도 필드에 강제 접근 가능
try {
if (field.get(object) == null) {
return false;
}
} catch (IllegalAccessException e) {
throw new RuntimeException("필드 접근 실패", e);
}
}
return true; // 모든 필드가 null이 아닐 때만 true 반환
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
package com.pickyfy.pickyfy.repository;

import com.pickyfy.pickyfy.domain.Place;
import com.pickyfy.pickyfy.domain.UserSavedPlace;
import org.springframework.data.jpa.repository.JpaRepository;


import java.util.List;
import java.util.Optional;


public interface UserSavedPlaceRepository extends JpaRepository<UserSavedPlace, Long> {
List<UserSavedPlace> findAllByUserId(Long id);
UserSavedPlace findByUserId(Long userId);

Optional<UserSavedPlace> findByUserIdAndPlaceId(Long userId, Long placeId);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.pickyfy.pickyfy.service;

import com.pickyfy.pickyfy.web.dto.request.CategoryCreateRequest;
import com.pickyfy.pickyfy.web.dto.request.CategoryUpdateRequest;
import com.pickyfy.pickyfy.web.dto.request.CategoryTypeRequest;
import com.pickyfy.pickyfy.web.dto.response.CategoryResponse;
import java.util.List;

public interface CategoryService {
Long createCategory(CategoryCreateRequest categoryCreateRequest);
Long createCategory(CategoryTypeRequest categoryCreateRequest);
CategoryResponse getCategory(Long id);
List<CategoryResponse> getAllCategories();
void updateCategory(Long id, CategoryUpdateRequest request);
void updateCategory(Long id, CategoryTypeRequest request);
void deleteCategory(Long id);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
import com.pickyfy.pickyfy.domain.CategoryType;
import com.pickyfy.pickyfy.exception.DuplicateResourceException;
import com.pickyfy.pickyfy.repository.CategoryRepository;
import com.pickyfy.pickyfy.web.dto.request.CategoryCreateRequest;
import com.pickyfy.pickyfy.web.dto.request.CategoryUpdateRequest;
import com.pickyfy.pickyfy.web.dto.request.CategoryTypeRequest;
import com.pickyfy.pickyfy.web.dto.response.CategoryResponse;
import jakarta.persistence.EntityNotFoundException;
import java.util.List;
Expand All @@ -24,7 +23,7 @@ public class CategoryServiceImpl implements CategoryService {

@Override
@Transactional
public Long createCategory(CategoryCreateRequest categoryCreateRequest) {
public Long createCategory(CategoryTypeRequest categoryCreateRequest) {
validateDuplicateType(categoryCreateRequest.categoryType());

Category category = Category.builder()
Expand All @@ -49,13 +48,11 @@ public List<CategoryResponse> getAllCategories() {

@Override
@Transactional
public void updateCategory(Long id, CategoryUpdateRequest request) {
public void updateCategory(Long id, CategoryTypeRequest request) {
Category category = findCategoryById(id);

if (category.getType() != request.categoryType()) {
validateDuplicateType(request.categoryType());
}

category.update(request.categoryType());
}

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/pickyfy/pickyfy/service/EmailService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
import com.pickyfy.pickyfy.web.dto.response.EmailVerificationVerifyResponse;

public interface EmailService {

EmailVerificationSendResponse sendAuthCode(EmailVerificationSendRequest request);

EmailVerificationVerifyResponse verifyAuthCode(EmailVerificationVerifyRequest emailVerificationVerifyRequest);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.pickyfy.pickyfy.service;

import com.pickyfy.pickyfy.web.dto.request.MagazineCreateRequest;
import com.pickyfy.pickyfy.web.dto.request.MagazineUpdateRequest;
import com.pickyfy.pickyfy.web.dto.request.MagazineRequest;
import com.pickyfy.pickyfy.web.dto.response.MagazineResponse;
import java.util.List;

public interface MagazineService {
Long createMagazine(MagazineCreateRequest request);
Long createMagazine(MagazineRequest request);
MagazineResponse getMagazine(Long id);
List<MagazineResponse> getAllMagazines();
void updateMagazine(Long id, MagazineUpdateRequest request);
void updateMagazine(Long id, MagazineRequest request);
void deleteMagazine(Long id);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
import com.pickyfy.pickyfy.domain.Magazine;
import com.pickyfy.pickyfy.exception.DuplicateResourceException;
import com.pickyfy.pickyfy.repository.MagazineRepository;
import com.pickyfy.pickyfy.web.dto.request.MagazineCreateRequest;
import com.pickyfy.pickyfy.web.dto.request.MagazineUpdateRequest;
import com.pickyfy.pickyfy.web.dto.request.MagazineRequest;
import com.pickyfy.pickyfy.web.dto.response.MagazineResponse;
import jakarta.persistence.EntityNotFoundException;
import java.util.List;
Expand All @@ -24,7 +23,7 @@ public class MagazineServiceImpl implements MagazineService {

@Override
@Transactional
public Long createMagazine(MagazineCreateRequest request) {
public Long createMagazine(MagazineRequest request) {
validateDuplicateTitle(request.title());
Magazine magazine = Magazine.builder()
.title(request.title())
Expand All @@ -49,7 +48,7 @@ public List<MagazineResponse> getAllMagazines() {

@Override
@Transactional
public void updateMagazine(Long id, MagazineUpdateRequest request) {
public void updateMagazine(Long id, MagazineRequest request) {
Magazine magazine = findMagazineById(id);
if (request.iconFile() == null){
magazine.update(request.title());
Expand Down
Loading