diff --git a/src/main/java/com/deare/backend/api/home/controller/HomeController.java b/src/main/java/com/deare/backend/api/home/controller/HomeController.java index 7ebf974e..8f3af607 100644 --- a/src/main/java/com/deare/backend/api/home/controller/HomeController.java +++ b/src/main/java/com/deare/backend/api/home/controller/HomeController.java @@ -1,14 +1,14 @@ package com.deare.backend.api.home.controller; +import com.deare.backend.api.home.dto.request.HomeEditRequestDTO; import com.deare.backend.api.home.dto.response.HomeDashboardResponse; import com.deare.backend.api.home.service.HomeService; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -27,4 +27,16 @@ public ApiResponse getHome() { HomeDashboardResponse res = homeService.getHome(userId); return ApiResponse.success(res); } + + @PutMapping + @Operation( + summary = "홈 화면 편집 저장", + description = "스티커 배치 , 배경색 변경 등 홈화면 편집 내용을 저장하는 API입니다." + ) + public ApiResponse editHome(@Valid @RequestBody HomeEditRequestDTO request){ + Long userId = SecurityUtil.getCurrentUserId(); + homeService.editHome(userId, request); + return ApiResponse.success(null); + } + } diff --git a/src/main/java/com/deare/backend/api/home/dto/request/HomeEditRequestDTO.java b/src/main/java/com/deare/backend/api/home/dto/request/HomeEditRequestDTO.java new file mode 100644 index 00000000..e1e747c6 --- /dev/null +++ b/src/main/java/com/deare/backend/api/home/dto/request/HomeEditRequestDTO.java @@ -0,0 +1,24 @@ +package com.deare.backend.api.home.dto.request; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; + +import java.math.BigDecimal; +import java.util.List; + +public record HomeEditRequestDTO( + @NotBlank + @Pattern(regexp = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$", + message = "HEX 색상 코드 형식이 올바르지 않습니다.") + String homeColor, List stickers +) { + @NotNull + public record StickerRequest( + Long imageId, + BigDecimal posX, + BigDecimal posY, + Integer posZ, + BigDecimal rotation, + BigDecimal scale + ){} +} \ No newline at end of file diff --git a/src/main/java/com/deare/backend/api/home/service/HomeService.java b/src/main/java/com/deare/backend/api/home/service/HomeService.java index 55d03760..b5d45b8d 100644 --- a/src/main/java/com/deare/backend/api/home/service/HomeService.java +++ b/src/main/java/com/deare/backend/api/home/service/HomeService.java @@ -1,10 +1,15 @@ package com.deare.backend.api.home.service; +import com.deare.backend.api.home.dto.request.HomeEditRequestDTO; +import com.deare.backend.api.home.dto.request.HomeEditRequestDTO.StickerRequest; import com.deare.backend.api.home.dto.response.HomeDashboardResponse; import com.deare.backend.api.home.dto.result.HomeSettingDto; import com.deare.backend.api.home.dto.result.HomeStickerDto; import com.deare.backend.api.home.dto.result.HomeUserDto; import com.deare.backend.api.home.exception.HomeErrorCode; +import com.deare.backend.domain.image.entity.Image; +import com.deare.backend.domain.image.exception.ImageErrorCode; +import com.deare.backend.domain.image.repository.ImageRepository; import com.deare.backend.domain.setting.entity.UserSetting; import com.deare.backend.domain.setting.repository.UserSettingRepository; import com.deare.backend.domain.sticker.entity.UserSticker; @@ -17,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -25,6 +32,7 @@ public class HomeService { private final UserRepository userRepository; private final UserSettingRepository userSettingRepository; private final UserStickerRepository stickerRepository; + private final ImageRepository imageRepository; @Transactional(readOnly=true) public HomeDashboardResponse getHome(Long userId) { @@ -64,6 +72,50 @@ public HomeDashboardResponse getHome(Long userId) { stickerDtos ); } + @Transactional + public void editHome(Long userId, HomeEditRequestDTO request) { + + User user = userRepository.findById(userId) + .orElseThrow(() -> new GeneralException(HomeErrorCode.USER_NOT_FOUND)); + + UserSetting userSetting = userSettingRepository.findByUser_Id(userId).orElse(null); + if (userSetting != null) { + userSetting.updateHomeColor(request.homeColor()); + } else { + userSettingRepository.save(UserSetting.createDefault(user, request.homeColor())); + } + + stickerRepository.deleteAllByUserId(userId); + + List stickerRequests = request.stickers(); + if (stickerRequests.isEmpty()) { + return; + } + + List imageIds = stickerRequests.stream() + .map(HomeEditRequestDTO.StickerRequest::imageId) + .distinct() + .toList(); + + Map imageMap = imageRepository.findAllById(imageIds).stream() + .collect(Collectors.toMap(Image::getId, image -> image)); + + List newStickers = stickerRequests.stream() + .map(dto -> { + Image image = imageMap.get(dto.imageId()); + if (image == null) { + throw new GeneralException(ImageErrorCode.IMAGE_40001); + } + return UserSticker.create( + user, image, + dto.posX(), dto.posY(), dto.posZ(), + dto.rotation(), dto.scale() + ); + }) + .toList(); + + stickerRepository.saveAll(newStickers); + } private HomeStickerDto toStickerDto(UserSticker sticker) { return new HomeStickerDto( diff --git a/src/main/java/com/deare/backend/api/setting/controller/SettingController.java b/src/main/java/com/deare/backend/api/setting/controller/SettingController.java index 4c248171..421c9c73 100644 --- a/src/main/java/com/deare/backend/api/setting/controller/SettingController.java +++ b/src/main/java/com/deare/backend/api/setting/controller/SettingController.java @@ -1,13 +1,11 @@ package com.deare.backend.api.setting.controller; import com.deare.backend.api.setting.dto.request.UpdateFontRequestDTO; -import com.deare.backend.api.setting.dto.request.UpdateHomeColorRequestDTO; import com.deare.backend.api.setting.dto.response.*; import com.deare.backend.api.setting.service.SettingService; import com.deare.backend.global.auth.util.SecurityUtil; import com.deare.backend.global.common.response.ApiResponse; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -47,17 +45,5 @@ public ApiResponse upgradeMembership() { Long userId = SecurityUtil.getCurrentUserId(); return ApiResponse.success(settingService.upgradeMembership(userId)); } - @PatchMapping("/homecolor") - @Operation( - summary = "홈 배경색 변경", - description = "사용자의 홈 화면 배경색을 변경하는 API입니다." - ) - public ApiResponse updateHomeColor( - @Valid @RequestBody UpdateHomeColorRequestDTO request - ) { - Long userId = SecurityUtil.getCurrentUserId(); - UpdateHomeColorResponseDTO res = settingService.updateHomeColor(userId, request); - return ApiResponse.success(res); - } } diff --git a/src/main/java/com/deare/backend/api/setting/dto/request/UpdateHomeColorRequestDTO.java b/src/main/java/com/deare/backend/api/setting/dto/request/UpdateHomeColorRequestDTO.java deleted file mode 100644 index 66e96437..00000000 --- a/src/main/java/com/deare/backend/api/setting/dto/request/UpdateHomeColorRequestDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.deare.backend.api.setting.dto.request; - -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Pattern; - -public record UpdateHomeColorRequestDTO( - @NotBlank - @Pattern(regexp = "^#[0-9A-Fa-f]{6}$") - String homeColor -) {} diff --git a/src/main/java/com/deare/backend/api/setting/dto/response/UpdateHomeColorResponseDTO.java b/src/main/java/com/deare/backend/api/setting/dto/response/UpdateHomeColorResponseDTO.java deleted file mode 100644 index 4979fdf9..00000000 --- a/src/main/java/com/deare/backend/api/setting/dto/response/UpdateHomeColorResponseDTO.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.deare.backend.api.setting.dto.response; - -public record UpdateHomeColorResponseDTO(String homeColor) {} diff --git a/src/main/java/com/deare/backend/api/setting/service/SettingService.java b/src/main/java/com/deare/backend/api/setting/service/SettingService.java index 7e09c642..92a32559 100644 --- a/src/main/java/com/deare/backend/api/setting/service/SettingService.java +++ b/src/main/java/com/deare/backend/api/setting/service/SettingService.java @@ -1,12 +1,10 @@ package com.deare.backend.api.setting.service; import com.deare.backend.api.setting.dto.request.UpdateFontRequestDTO; -import com.deare.backend.api.setting.dto.request.UpdateHomeColorRequestDTO; import com.deare.backend.api.setting.dto.response.*; import com.deare.backend.domain.setting.entity.enums.Font; import com.deare.backend.domain.setting.entity.enums.MembershipPlan; import com.deare.backend.domain.setting.entity.UserSetting; -import com.deare.backend.domain.setting.exception.HomeColorErrorCode; import com.deare.backend.domain.setting.exception.MembershipErrorCode; import com.deare.backend.domain.setting.exception.ThemeErrorCode; import com.deare.backend.domain.setting.repository.UserSettingRepository; @@ -89,16 +87,5 @@ private Font parseFontOrThrow422(String raw) { throw new GeneralException(ThemeErrorCode.THEME_UNPROCESSABLE_ENTITY); } } - @Transactional - public UpdateHomeColorResponseDTO updateHomeColor(Long userId, UpdateHomeColorRequestDTO request) { - - settingWriteService.ensureSettingExists(userId); - - UserSetting setting = userSettingRepository.findByUser_Id(userId) - .orElseThrow(() -> new GeneralException(HomeColorErrorCode.SETTING_NOT_FOUND )); - - setting.updateHomeColor(request.homeColor()); - return new UpdateHomeColorResponseDTO(setting.getHomeColor()); - } } diff --git a/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java b/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java deleted file mode 100644 index 979bb2c9..00000000 --- a/src/main/java/com/deare/backend/api/sticker/controller/StickerController.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.deare.backend.api.sticker.controller; - -import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; -import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; -import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; -import com.deare.backend.api.sticker.service.StickerService; -import com.deare.backend.global.auth.util.SecurityUtil; -import com.deare.backend.global.common.response.ApiResponse; -import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/stickers") -@RequiredArgsConstructor -public class StickerController { - - private final StickerService stickerService; - - @PostMapping - @Operation( - summary = "스티커 추가", - description = "홈 화면에 스티커를 추가하는 API입니다." - ) - public ApiResponse createSticker( - @Valid @RequestBody StickerCreateRequestDTO request - ) { - Long userId = SecurityUtil.getCurrentUserId(); - return ApiResponse.success(stickerService.create(userId, request)); - } - - @PatchMapping("/{stickerId}") - @Operation( - summary = "스티커 수정", - description = "홈 화면에 배치된 스티커의 위치/회전/크기를 수정하는 API입니다." - ) - public ApiResponse updateSticker( - @PathVariable Long stickerId, - @Valid @RequestBody StickerUpdateRequestDTO request - ) { - Long userId = SecurityUtil.getCurrentUserId(); - return ApiResponse.success(stickerService.update(userId, stickerId, request)); - } - - @DeleteMapping("/{stickerId}") - @Operation( - summary = "스티커 삭제", - description = "홈 화면에 배치된 스티커를 삭제하는 API입니다." - ) - public ApiResponse deleteSticker( - @PathVariable Long stickerId - ) { - Long userId = SecurityUtil.getCurrentUserId(); - return ApiResponse.success(stickerService.delete(userId, stickerId)); - } -} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java deleted file mode 100644 index faa598c4..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/request/StickerCreateRequestDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.deare.backend.api.sticker.dto.request; - -import java.math.BigDecimal; - -public record StickerCreateRequestDTO( - Long imageId, - BigDecimal posX, - BigDecimal posY, - Integer posZ, - BigDecimal rotation, - BigDecimal scale -) { -} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java deleted file mode 100644 index a1a4ce56..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/request/StickerUpdateRequestDTO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.deare.backend.api.sticker.dto.request; - -import java.math.BigDecimal; - -public record StickerUpdateRequestDTO( - BigDecimal posX, - BigDecimal posY, - Integer posZ, - BigDecimal rotation, - BigDecimal scale -) { -} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java deleted file mode 100644 index d795272a..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerCreateResponseDTO.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.deare.backend.api.sticker.dto.response; - -public record StickerCreateResponseDTO( - Long stickerId -) { -} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java deleted file mode 100644 index 4c257fdb..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerDeleteResponseDTO.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.deare.backend.api.sticker.dto.response; - -public record StickerDeleteResponseDTO( - Long stickerId -) {} diff --git a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java b/src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java deleted file mode 100644 index 758a33cf..00000000 --- a/src/main/java/com/deare/backend/api/sticker/dto/response/StickerUpdateResponseDTO.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.deare.backend.api.sticker.dto.response; - -public record StickerUpdateResponseDTO( - Long stickerId -) { -} diff --git a/src/main/java/com/deare/backend/api/sticker/service/StickerService.java b/src/main/java/com/deare/backend/api/sticker/service/StickerService.java deleted file mode 100644 index 0077f6c5..00000000 --- a/src/main/java/com/deare/backend/api/sticker/service/StickerService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.deare.backend.api.sticker.service; - -import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; -import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; -import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; - -public interface StickerService { - StickerCreateResponseDTO create(Long userId, StickerCreateRequestDTO request); - StickerUpdateResponseDTO update(Long userId, Long stickerId, StickerUpdateRequestDTO request); - StickerDeleteResponseDTO delete(Long userId, Long stickerId); -} diff --git a/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java b/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java deleted file mode 100644 index a99ff170..00000000 --- a/src/main/java/com/deare/backend/api/sticker/service/StickerServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.deare.backend.api.sticker.service; - -import com.deare.backend.api.sticker.dto.request.StickerCreateRequestDTO; -import com.deare.backend.api.sticker.dto.request.StickerUpdateRequestDTO; -import com.deare.backend.api.sticker.dto.response.StickerCreateResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerDeleteResponseDTO; -import com.deare.backend.api.sticker.dto.response.StickerUpdateResponseDTO; -import com.deare.backend.domain.image.entity.Image; -import com.deare.backend.domain.image.exception.ImageErrorCode; -import com.deare.backend.domain.image.repository.ImageRepository; -import com.deare.backend.domain.sticker.entity.UserSticker; -import com.deare.backend.domain.sticker.exception.StickerErrorCode; -import com.deare.backend.domain.sticker.repository.UserStickerImageQueryRepository; -import com.deare.backend.domain.sticker.repository.UserStickerRepository; -import com.deare.backend.domain.user.entity.User; -import com.deare.backend.domain.user.exception.UserErrorCode; -import com.deare.backend.domain.user.repository.UserRepository; -import com.deare.backend.global.common.exception.GeneralException; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Transactional -public class StickerServiceImpl implements StickerService { - - private final UserStickerRepository userStickerRepository; - private final UserRepository userRepository; - private final ImageRepository imageRepository; - private final UserStickerImageQueryRepository userStickerImageQueryRepository; - - @Override - public StickerCreateResponseDTO create(Long userId, StickerCreateRequestDTO request) { - User user = userRepository.findById(userId) - .orElseThrow(() -> new GeneralException(UserErrorCode.USER_NOT_FOUND)); - - Image image = imageRepository.findById(request.imageId()) - .orElseThrow(() -> new GeneralException(ImageErrorCode.IMAGE_40001)); - - UserSticker sticker = UserSticker.create( - user, - image, - request.posX(), - request.posY(), - request.posZ(), - request.rotation(), - request.scale() - ); - - UserSticker saved = userStickerRepository.save(sticker); - return new StickerCreateResponseDTO(saved.getId()); - } - - @Override - public StickerUpdateResponseDTO update(Long userId, Long stickerId, StickerUpdateRequestDTO request) { - UserSticker sticker = userStickerRepository.findById(stickerId) - .orElseThrow(() -> new GeneralException(StickerErrorCode.NOT_FOUND)); - - if (!sticker.isOwnedBy(userId)) { - throw new GeneralException(StickerErrorCode.FORBIDDEN); - } - - sticker.updateTransform( - request.posX(), - request.posY(), - request.posZ(), - request.rotation(), - request.scale() - ); - - return new StickerUpdateResponseDTO(sticker.getId()); - } - - @Override - public StickerDeleteResponseDTO delete(Long userId, Long stickerId) { - UserSticker sticker = userStickerRepository.findById(stickerId) - .orElseThrow(() -> new GeneralException(StickerErrorCode.NOT_FOUND)); - - if (!sticker.isOwnedBy(userId)) { - throw new GeneralException(StickerErrorCode.FORBIDDEN); - } - - userStickerRepository.delete(sticker); - return new StickerDeleteResponseDTO(stickerId); - } -} - diff --git a/src/main/java/com/deare/backend/domain/letter/entity/Letter.java b/src/main/java/com/deare/backend/domain/letter/entity/Letter.java index 4cec7ff6..9950abbe 100644 --- a/src/main/java/com/deare/backend/domain/letter/entity/Letter.java +++ b/src/main/java/com/deare/backend/domain/letter/entity/Letter.java @@ -27,7 +27,7 @@ public class Letter extends BaseEntity { private Long id; @Lob - @Column(name="content", columnDefinition = "TEXT", nullable = false) + @Column(name="content", columnDefinition = "LONGTEXT", nullable = false) private String content; @Column(name="received_at") diff --git a/src/main/java/com/deare/backend/domain/setting/exception/HomeColorErrorCode.java b/src/main/java/com/deare/backend/domain/setting/exception/HomeColorErrorCode.java deleted file mode 100644 index 5920f38b..00000000 --- a/src/main/java/com/deare/backend/domain/setting/exception/HomeColorErrorCode.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.deare.backend.domain.setting.exception; - -import com.deare.backend.global.common.exception.BaseErrorCode; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; - -@Getter -@RequiredArgsConstructor -public enum HomeColorErrorCode implements BaseErrorCode { - - INVALID_REQUEST( - HttpStatus.BAD_REQUEST, - "HOME_COLOR_40001", - "잘못된 홈 배경색 요청입니다." - ), - - UNAUTHORIZED( - HttpStatus.UNAUTHORIZED, - "HOME_COLOR_40101", - "로그인이 필요한 요청입니다." - ), - - SETTING_NOT_FOUND( - HttpStatus.NOT_FOUND, - "HOME_COLOR_40401", - "사용자 설정 정보를 찾을 수 없습니다." - ), - - INTERNAL_ERROR( - HttpStatus.INTERNAL_SERVER_ERROR, - "HOME_COLOR_50001", - "홈 배경색 변경 중 서버 오류가 발생했습니다." - ); - - private final HttpStatus status; - private final String code; - private final String message; -} diff --git a/src/main/java/com/deare/backend/domain/sticker/entity/UserSticker.java b/src/main/java/com/deare/backend/domain/sticker/entity/UserSticker.java index bd134ff8..39c45bfc 100644 --- a/src/main/java/com/deare/backend/domain/sticker/entity/UserSticker.java +++ b/src/main/java/com/deare/backend/domain/sticker/entity/UserSticker.java @@ -61,22 +61,4 @@ public static UserSticker create( us.scale = scale; return us; } - public boolean isOwnedBy(Long userId) { - return user != null && user.getId() != null && user.getId().equals(userId); - } - - public void updateTransform( - BigDecimal posX, - BigDecimal posY, - int posZ, - BigDecimal rotation, - BigDecimal scale - ) { - this.posX = posX; - this.posY = posY; - this.posZ = posZ; - this.rotation = rotation; - this.scale = scale; - } - } diff --git a/src/main/java/com/deare/backend/domain/sticker/exception/StickerErrorCode.java b/src/main/java/com/deare/backend/domain/sticker/exception/StickerErrorCode.java deleted file mode 100644 index 5b333a82..00000000 --- a/src/main/java/com/deare/backend/domain/sticker/exception/StickerErrorCode.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.deare.backend.domain.sticker.exception; - -import com.deare.backend.global.common.exception.BaseErrorCode; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; - -@Getter -@RequiredArgsConstructor -public enum StickerErrorCode implements BaseErrorCode { - - INVALID_REQUEST( - HttpStatus.BAD_REQUEST, - "STICKER_40001", - "잘못된 요청입니다." - ), - - UNAUTHORIZED( - HttpStatus.UNAUTHORIZED, - "STICKER_40101", - "로그인이 필요한 요청입니다." - ), - FORBIDDEN( - HttpStatus.FORBIDDEN, - "STICKER_40301", - "스티커에 대한 권한이 없습니다." - ), - IMAGE_NOT_FOUND( - HttpStatus.NOT_FOUND, - "STICKER_40401", - "이미지를 찾을 수 없습니다." - ), - NOT_FOUND( - HttpStatus.NOT_FOUND, - "STICKER_40402", - "스티커를 찾을 수 없습니다." - ), - - - INTERNAL_ERROR( - HttpStatus.INTERNAL_SERVER_ERROR, - "STICKER_50001", - "스티커 생성 중 서버 오류가 발생했습니다." - ); - - private final HttpStatus status; - private final String code; - private final String message; -} diff --git a/src/main/java/com/deare/backend/domain/sticker/repository/UserStickerImageQueryRepository.java b/src/main/java/com/deare/backend/domain/sticker/repository/UserStickerImageQueryRepository.java deleted file mode 100644 index fd6fab2b..00000000 --- a/src/main/java/com/deare/backend/domain/sticker/repository/UserStickerImageQueryRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.deare.backend.domain.sticker.repository; - -import com.deare.backend.domain.sticker.entity.UserSticker; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; - -public interface UserStickerImageQueryRepository extends JpaRepository { - - @Query(""" - select us.image.id - from UserSticker us - where us.user.id = :userId - and us.image.id in :imageIds - """) - List findOwnedImageIds( - @Param("userId") Long userId, - @Param("imageIds") List imageIds - ); -} diff --git a/src/main/java/com/deare/backend/domain/term/entity/Term.java b/src/main/java/com/deare/backend/domain/term/entity/Term.java index 27b00d6b..da8d23a8 100644 --- a/src/main/java/com/deare/backend/domain/term/entity/Term.java +++ b/src/main/java/com/deare/backend/domain/term/entity/Term.java @@ -26,7 +26,7 @@ public class Term extends BaseEntity { private TermType type; @Lob - @Column(name = "content", nullable = false) + @Column(name = "content", columnDefinition = "LONGTEXT", nullable = false) private String content; @Column(name = "is_required", nullable = false) @@ -49,4 +49,4 @@ public Term(String title, TermType type, String content, boolean isRequired) { this.isRequired = isRequired; this.effectiveAt = LocalDateTime.now(); } -} +} \ No newline at end of file