diff --git a/src/main/java/com/onebridge/ouch/controller/language/LanguageController.java b/src/main/java/com/onebridge/ouch/controller/language/LanguageController.java new file mode 100644 index 0000000..45a0ac5 --- /dev/null +++ b/src/main/java/com/onebridge/ouch/controller/language/LanguageController.java @@ -0,0 +1,32 @@ +package com.onebridge.ouch.controller.language; + +import java.util.List; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.onebridge.ouch.apiPayload.ApiResponse; +import com.onebridge.ouch.service.language.LanguageService; +import com.onebridge.ouch.dto.language.response.GetLanguageResponse; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; + +@Tag(name = "언어 관련 API", description = "언어 관련 API 입니다.") +@RestController +@RequestMapping("/languages") +@RequiredArgsConstructor +public class LanguageController { + + private final LanguageService languageService; + + @Operation(summary = "언어 목록 조회 API", description = "데이터베이스 내 모든 언어 목록을 조회합니다.") + @GetMapping + public ResponseEntity>> getAllLanguages() { + List languages = languageService.getAllLanguages(); + return ResponseEntity.ok(ApiResponse.success(languages)); + } +} diff --git a/src/main/java/com/onebridge/ouch/controller/nation/NationController.java b/src/main/java/com/onebridge/ouch/controller/nation/NationController.java new file mode 100644 index 0000000..7f74789 --- /dev/null +++ b/src/main/java/com/onebridge/ouch/controller/nation/NationController.java @@ -0,0 +1,32 @@ +package com.onebridge.ouch.controller.nation; + +import java.util.List; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.onebridge.ouch.apiPayload.ApiResponse; +import com.onebridge.ouch.dto.nation.response.GetNationResponse; +import com.onebridge.ouch.service.nation.NationService; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; + +@Tag(name = "국적 관련 API", description = "국적 관련 API 입니다.") +@RestController +@RequestMapping("/nations") +@RequiredArgsConstructor +public class NationController { + + private final NationService nationService; + + @Operation(summary = "국가 목록 조회 API", description = "데이터베이스 내 모든 국가 목록을 조회합니다.") + @GetMapping + public ResponseEntity>> getAllNations() { + List nations = nationService.getAllNations(); + return ResponseEntity.ok(ApiResponse.success(nations)); + } +} diff --git a/src/main/java/com/onebridge/ouch/controller/user/UserController.java b/src/main/java/com/onebridge/ouch/controller/user/UserController.java index 52f89e7..682a0d5 100644 --- a/src/main/java/com/onebridge/ouch/controller/user/UserController.java +++ b/src/main/java/com/onebridge/ouch/controller/user/UserController.java @@ -1,18 +1,27 @@ package com.onebridge.ouch.controller.user; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.onebridge.ouch.apiPayload.ApiResponse; +import com.onebridge.ouch.dto.language.response.GetLanguageResponse; +import com.onebridge.ouch.dto.nation.response.GetNationResponse; import com.onebridge.ouch.dto.user.response.UserInfoResponse; import com.onebridge.ouch.security.authorization.UserId; import com.onebridge.ouch.service.user.UserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +@Tag(name = "사용자 관련 API", description = "사용자 관련 API 입니다.") @RestController @RequestMapping("/users") @RequiredArgsConstructor @@ -35,22 +44,34 @@ public ResponseEntity> deactivateUser( userService.deactivateUser(userId); return ResponseEntity.ok(ApiResponse.successWithNoData()); } -} - - - - - - - - - - - - - - + @Operation(summary = "유저 언어 설정 변경 API", description = "언어코드를 전달받아 유저의 언어 설정을 변경합니다.") + @PatchMapping("/languages/{languageCode}") + public ResponseEntity> updateUserLanguage(@UserId Long userId, @PathVariable("languageCode") String languageCode) { + userService.updateUserLanguage(userId, languageCode); + return ResponseEntity.ok(ApiResponse.successWithNoData()); + } + @Operation(summary = "유저 설정 언어 조회 API", description = "로그인 된 유저의 설정된 언어를 조회합니다.") + @GetMapping("/languages") + public ResponseEntity> getUserLanguage(@UserId Long userId) { + userService.getUserLanguage(userId); + GetLanguageResponse languageResponse = userService.getUserLanguage(userId); + return ResponseEntity.ok(ApiResponse.success(languageResponse)); + } + @Operation(summary = "유저 국적 설정 변경 API", description = "국가코드를 전달받아 유저의 국적 설정을 변경합니다.") + @PatchMapping("/nations/{nationCode}") + public ResponseEntity> updateUserNation(@UserId Long userId, @PathVariable("nationCode") String nationCode) { + userService.updateUserNation(userId, nationCode); + return ResponseEntity.ok(ApiResponse.successWithNoData()); + } + @Operation(summary = "유저 설정 국적 조회 API", description = "로그인 된 유저의 설정된 국적를 조회합니다.") + @GetMapping("/nations") + public ResponseEntity> getUserNation(@UserId Long userId) { + userService.getUserNation(userId); + GetNationResponse nationResponse = userService.getUserNation(userId); + return ResponseEntity.ok(ApiResponse.success(nationResponse)); + } +} diff --git a/src/main/java/com/onebridge/ouch/domain/Language.java b/src/main/java/com/onebridge/ouch/domain/Language.java index f7e8960..5f863e2 100644 --- a/src/main/java/com/onebridge/ouch/domain/Language.java +++ b/src/main/java/com/onebridge/ouch/domain/Language.java @@ -17,10 +17,10 @@ public class Language extends BaseEntity { private Long id; //국제 언어 코드 - @Column(nullable = false, length = 4) + @Column(unique = true, nullable = false, length = 4) private String code; //언어 이름 - ex) 한국어, 영어 - @Column(nullable = false, length = 30) + @Column(unique = true, nullable = false, length = 30) private String name; } diff --git a/src/main/java/com/onebridge/ouch/domain/Nation.java b/src/main/java/com/onebridge/ouch/domain/Nation.java index a353900..f95bd7a 100644 --- a/src/main/java/com/onebridge/ouch/domain/Nation.java +++ b/src/main/java/com/onebridge/ouch/domain/Nation.java @@ -25,9 +25,9 @@ public class Nation extends BaseEntity { private Long id; // 국가 코드 - @Column(nullable = false, length = 4) + @Column(unique = true, nullable = false, length = 4) private String code; - @Column(nullable = false, length = 30) + @Column(unique = true, nullable = false, length = 30) private String name; } diff --git a/src/main/java/com/onebridge/ouch/domain/User.java b/src/main/java/com/onebridge/ouch/domain/User.java index 9412ab9..ba7cfa7 100644 --- a/src/main/java/com/onebridge/ouch/domain/User.java +++ b/src/main/java/com/onebridge/ouch/domain/User.java @@ -103,4 +103,12 @@ public class User extends BaseEntity { public OuchAuthority getAuthority() { return OuchAuthority.INDIVIDUAL; } + + public void updateLanguage(Language language) { + this.language = language; + } + + public void updateNation(Nation nation) { + this.nation = nation; + } } diff --git a/src/main/java/com/onebridge/ouch/dto/MessageResponse.java b/src/main/java/com/onebridge/ouch/dto/MessageResponse.java deleted file mode 100644 index 8454e8a..0000000 --- a/src/main/java/com/onebridge/ouch/dto/MessageResponse.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.onebridge.ouch.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@AllArgsConstructor -@Getter -public class MessageResponse { - - private String message; -} diff --git a/src/main/java/com/onebridge/ouch/dto/MessageResponseDetailed.java b/src/main/java/com/onebridge/ouch/dto/MessageResponseDetailed.java deleted file mode 100644 index 9581742..0000000 --- a/src/main/java/com/onebridge/ouch/dto/MessageResponseDetailed.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.onebridge.ouch.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@AllArgsConstructor -@Getter -public class MessageResponseDetailed { - - private boolean success; - - private String code; - - private String message; - - private T data; -} diff --git a/src/main/java/com/onebridge/ouch/dto/language/request/AllLangsRequest.java b/src/main/java/com/onebridge/ouch/dto/language/request/AllLangsRequest.java deleted file mode 100644 index 65d652f..0000000 --- a/src/main/java/com/onebridge/ouch/dto/language/request/AllLangsRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.onebridge.ouch.dto.language.request; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class AllLangsRequest { - - private Long id; - - private String name; -} diff --git a/src/main/java/com/onebridge/ouch/dto/language/response/UserLangResponse.java b/src/main/java/com/onebridge/ouch/dto/language/response/GetLanguageResponse.java similarity index 52% rename from src/main/java/com/onebridge/ouch/dto/language/response/UserLangResponse.java rename to src/main/java/com/onebridge/ouch/dto/language/response/GetLanguageResponse.java index 17a3db0..6713a72 100644 --- a/src/main/java/com/onebridge/ouch/dto/language/response/UserLangResponse.java +++ b/src/main/java/com/onebridge/ouch/dto/language/response/GetLanguageResponse.java @@ -1,13 +1,13 @@ -package com.onebridge.ouch.dto.language.response; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class UserLangResponse { - - private Long language_id; - - private String language_name; -} +package com.onebridge.ouch.dto.language.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class GetLanguageResponse { + + private String name; + + private String code; // 언어 코드 (e.g., 'en', 'ko') +} diff --git a/src/main/java/com/onebridge/ouch/dto/nation/response/GetNationResponse.java b/src/main/java/com/onebridge/ouch/dto/nation/response/GetNationResponse.java new file mode 100644 index 0000000..a756fd8 --- /dev/null +++ b/src/main/java/com/onebridge/ouch/dto/nation/response/GetNationResponse.java @@ -0,0 +1,13 @@ +package com.onebridge.ouch.dto.nation.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class GetNationResponse { + + private String name; + + private String code; +} diff --git a/src/main/java/com/onebridge/ouch/repository/language/LanguageRepository.java b/src/main/java/com/onebridge/ouch/repository/language/LanguageRepository.java index cb5a874..4c924cc 100644 --- a/src/main/java/com/onebridge/ouch/repository/language/LanguageRepository.java +++ b/src/main/java/com/onebridge/ouch/repository/language/LanguageRepository.java @@ -1,5 +1,7 @@ package com.onebridge.ouch.repository.language; +import java.util.Optional; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -7,4 +9,5 @@ @Repository public interface LanguageRepository extends JpaRepository { + Optional findByCode(String code); } diff --git a/src/main/java/com/onebridge/ouch/repository/nation/NationRepository.java b/src/main/java/com/onebridge/ouch/repository/nation/NationRepository.java index c31b172..6ef0720 100644 --- a/src/main/java/com/onebridge/ouch/repository/nation/NationRepository.java +++ b/src/main/java/com/onebridge/ouch/repository/nation/NationRepository.java @@ -1,8 +1,12 @@ package com.onebridge.ouch.repository.nation; +import java.util.Optional; + import org.springframework.data.jpa.repository.JpaRepository; +import com.onebridge.ouch.domain.Language; import com.onebridge.ouch.domain.Nation; public interface NationRepository extends JpaRepository { + Optional findByCode(String code); } diff --git a/src/main/java/com/onebridge/ouch/repository/user/UserRepository.java b/src/main/java/com/onebridge/ouch/repository/user/UserRepository.java index 8ac1838..4bf874a 100644 --- a/src/main/java/com/onebridge/ouch/repository/user/UserRepository.java +++ b/src/main/java/com/onebridge/ouch/repository/user/UserRepository.java @@ -2,6 +2,7 @@ import java.util.Optional; +import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -12,4 +13,10 @@ public interface UserRepository extends JpaRepository { Optional findByLoginId(String loginId); Optional findByNickname(String nickName); + + @EntityGraph(attributePaths = {"language"}) // language 필드를 즉시 조인 (fetch join 쿼리 최적화) + Optional findWithLanguageById(Long id); + + @EntityGraph(attributePaths = {"nation"}) // language 필드를 즉시 조인 (fetch join 쿼리 최적화) + Optional findWithNationById(Long id); } diff --git a/src/main/java/com/onebridge/ouch/security/dto/request/SignUpRequest.java b/src/main/java/com/onebridge/ouch/security/dto/request/SignUpRequest.java index d42d12b..1749b77 100644 --- a/src/main/java/com/onebridge/ouch/security/dto/request/SignUpRequest.java +++ b/src/main/java/com/onebridge/ouch/security/dto/request/SignUpRequest.java @@ -8,6 +8,7 @@ import com.onebridge.ouch.domain.enums.Gender; import com.onebridge.ouch.domain.enums.UserStatus; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.NoArgsConstructor; @@ -25,8 +26,10 @@ public class SignUpRequest { private String email; private String address; private UserStatus status; - private Long languageId; - private Long nationId; + @Schema(example = "kr") + private String languageCode; + @Schema(example = "KO") + private String nationCode; public User toEntity(String encodedPassword, Language language, Nation nation) { return User.builder() diff --git a/src/main/java/com/onebridge/ouch/security/service/SignUpService.java b/src/main/java/com/onebridge/ouch/security/service/SignUpService.java index 53e85b8..7a8b07d 100644 --- a/src/main/java/com/onebridge/ouch/security/service/SignUpService.java +++ b/src/main/java/com/onebridge/ouch/security/service/SignUpService.java @@ -32,10 +32,10 @@ public void signUpUser(SignUpRequest signUpRequest) { checkDuplicatedNickname(signUpRequest.getNickname()); // ID를 통해 실제 Entity 조회 - Language language = languageRepository.findById(signUpRequest.getLanguageId()) + Language language = languageRepository.findByCode(signUpRequest.getLanguageCode()) .orElseThrow(() -> new OuchException(CommonErrorCode.LANGUAGE_NOT_FOUND)); - Nation nation = nationRepository.findById(signUpRequest.getNationId()) + Nation nation = nationRepository.findByCode(signUpRequest.getNationCode()) .orElseThrow(() -> new OuchException(CommonErrorCode.NATION_NOT_FOUND)); User user = signUpRequest.toEntity(passwordEncoder.encode(signUpRequest.getPassword()), language, nation); diff --git a/src/main/java/com/onebridge/ouch/service/LanguageService.java b/src/main/java/com/onebridge/ouch/service/LanguageService.java deleted file mode 100644 index 8ddd9d5..0000000 --- a/src/main/java/com/onebridge/ouch/service/LanguageService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.onebridge.ouch.service; - -import java.util.List; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - -import com.onebridge.ouch.apiPayload.code.error.CommonErrorCode; -import com.onebridge.ouch.apiPayload.exception.OuchException; -import com.onebridge.ouch.domain.Language; -import com.onebridge.ouch.repository.language.LanguageRepository; -import com.onebridge.ouch.web.dto.LanguageDto; - -import lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -public class LanguageService { - - private final LanguageRepository languageRepository; - - /* - public Long addLanguage(LanguageDto languageDto) { - Language language = Language.builder() - .name(languageDto.getName()) - .code(languageDto.getCode()) - .build(); - Language savedLanguage = languageRepository.save(language); - return savedLanguage.getId(); - } - - public void updateLanguage(Long id, LanguageDto languageDto) { - Language existingLanguage = languageRepository.findById(id) - .orElseThrow(() -> new OuchException(CommonErrorCode.RESOURCE_NOT_FOUND)); - - existingLanguage.updateLanguageFields( - languageDto.getName(), - languageDto.getCode() - ); - languageRepository.save(existingLanguage); - } - - public void deleteLanguage(Long id) { - if (!languageRepository.existsById(id)) { - throw new OuchException(CommonErrorCode.RESOURCE_NOT_FOUND); - } - languageRepository.deleteById(id); - } - */ - - public List getAllLanguages() { - List languages = languageRepository.findAll(); - return languages.stream() - .map(language -> new LanguageDto(language.getName(), language.getCode())) - .collect(Collectors.toList()); - } -} diff --git a/src/main/java/com/onebridge/ouch/service/language/LanguageService.java b/src/main/java/com/onebridge/ouch/service/language/LanguageService.java new file mode 100644 index 0000000..6984f3d --- /dev/null +++ b/src/main/java/com/onebridge/ouch/service/language/LanguageService.java @@ -0,0 +1,28 @@ +package com.onebridge.ouch.service.language; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.onebridge.ouch.domain.Language; +import com.onebridge.ouch.repository.language.LanguageRepository; +import com.onebridge.ouch.dto.language.response.GetLanguageResponse; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class LanguageService { + + private final LanguageRepository languageRepository; + + @Transactional + public List getAllLanguages() { + List languages = languageRepository.findAll(); + return languages.stream() + .map(language -> new GetLanguageResponse(language.getName(), language.getCode())) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/onebridge/ouch/service/nation/NationService.java b/src/main/java/com/onebridge/ouch/service/nation/NationService.java new file mode 100644 index 0000000..47e1d93 --- /dev/null +++ b/src/main/java/com/onebridge/ouch/service/nation/NationService.java @@ -0,0 +1,28 @@ +package com.onebridge.ouch.service.nation; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.onebridge.ouch.domain.Nation; +import com.onebridge.ouch.dto.nation.response.GetNationResponse; +import com.onebridge.ouch.repository.nation.NationRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class NationService { + + private final NationRepository nationRepository; + + @Transactional + public List getAllNations() { + List nations = nationRepository.findAll(); + return nations.stream() + .map(nation -> new GetNationResponse(nation.getName(), nation.getCode())) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/onebridge/ouch/service/user/UserService.java b/src/main/java/com/onebridge/ouch/service/user/UserService.java index fa7ad70..a2de4f5 100644 --- a/src/main/java/com/onebridge/ouch/service/user/UserService.java +++ b/src/main/java/com/onebridge/ouch/service/user/UserService.java @@ -6,21 +6,28 @@ import com.onebridge.ouch.apiPayload.code.error.CommonErrorCode; import com.onebridge.ouch.apiPayload.exception.OuchException; import com.onebridge.ouch.converter.UserConverter; +import com.onebridge.ouch.domain.Language; +import com.onebridge.ouch.domain.Nation; import com.onebridge.ouch.domain.User; import com.onebridge.ouch.domain.enums.UserStatus; +import com.onebridge.ouch.dto.language.response.GetLanguageResponse; +import com.onebridge.ouch.dto.nation.response.GetNationResponse; import com.onebridge.ouch.dto.user.response.UserInfoResponse; +import com.onebridge.ouch.repository.language.LanguageRepository; import com.onebridge.ouch.repository.nation.NationRepository; import com.onebridge.ouch.repository.user.UserRepository; import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; @Service -@AllArgsConstructor +@RequiredArgsConstructor public class UserService { private final UserRepository userRepository; - private final NationRepository nationRepository; private final UserConverter userConverter; + private final NationRepository nationRepository; + private final LanguageRepository languageRepository; //유저 조회(테스트용) @Transactional(readOnly = true) @@ -42,42 +49,46 @@ public void deactivateUser(Long userId) { userRepository.save(deactivatedUser); } -} - - - - - - - - - - - - - - - - - - - - - - - - - - + @Transactional + public void updateUserLanguage(Long userId, String languageCode) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new OuchException(CommonErrorCode.MEMBER_NOT_FOUND)); + Language language = languageRepository.findByCode(languageCode) + .orElseThrow(() -> new OuchException(CommonErrorCode.LANGUAGE_NOT_FOUND)); + user.updateLanguage(language); + } + @Transactional + public GetLanguageResponse getUserLanguage(Long userId) { + User user = userRepository.findWithLanguageById(userId) + .orElseThrow(() -> new OuchException(CommonErrorCode.MEMBER_NOT_FOUND)); + Language language = user.getLanguage(); + return new GetLanguageResponse(language.getName(), language.getCode()); + } + @Transactional + public void updateUserNation(Long userId, String nationCode) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new OuchException(CommonErrorCode.MEMBER_NOT_FOUND)); + Nation nation = nationRepository.findByCode(nationCode) + .orElseThrow(() -> new OuchException(CommonErrorCode.LANGUAGE_NOT_FOUND)); + user.updateNation(nation); + } + @Transactional + public GetNationResponse getUserNation(Long userId) { + User user = userRepository.findWithNationById(userId) + .orElseThrow(() -> new OuchException(CommonErrorCode.MEMBER_NOT_FOUND)); + Nation nation = user.getNation(); + return new GetNationResponse(nation.getName(), nation.getCode()); + } +} diff --git a/src/main/java/com/onebridge/ouch/web/controller/LanguageController.java b/src/main/java/com/onebridge/ouch/web/controller/LanguageController.java deleted file mode 100644 index aef6706..0000000 --- a/src/main/java/com/onebridge/ouch/web/controller/LanguageController.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.onebridge.ouch.web.controller; - -import java.util.List; - -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.RequestBody; - -import com.onebridge.ouch.apiPayload.ApiResponse; -import com.onebridge.ouch.service.LanguageService; -import com.onebridge.ouch.web.dto.LanguageDto; - -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; - -@RestController -@RequestMapping("/api/languages") -@RequiredArgsConstructor -public class LanguageController { - - private final LanguageService languageService; - - /* - @PostMapping - public ResponseEntity> addLanguage(@Valid @RequestBody LanguageDto languageDto) { - Long languageId = languageService.addLanguage(languageDto); - return ResponseEntity.ok(ApiResponse.success(languageId)); - } - - @PatchMapping("/{languageId}") - public ResponseEntity> updateLanguage(@PathVariable("languageId") Long id, - @RequestBody LanguageDto languageDto) { - languageService.updateLanguage(id, languageDto); - return ResponseEntity.ok(ApiResponse.successWithNoData()); - } - - @DeleteMapping("/{languageId}") - public ResponseEntity> deleteLanguage(@PathVariable("languageId") Long id) { - languageService.deleteLanguage(id); - return ResponseEntity.ok(ApiResponse.successWithNoData()); - } - */ - - @GetMapping // 전체 언어 목록 조회 - public ResponseEntity>> getAllLanguages() { - List languages = languageService.getAllLanguages(); - return ResponseEntity.ok(ApiResponse.success(languages)); - } -} diff --git a/src/main/java/com/onebridge/ouch/web/dto/LanguageDto.java b/src/main/java/com/onebridge/ouch/web/dto/LanguageDto.java deleted file mode 100644 index 36e59f0..0000000 --- a/src/main/java/com/onebridge/ouch/web/dto/LanguageDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.onebridge.ouch.web.dto; - -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class LanguageDto { - - @NotBlank(message = "언어 이름은 필수입니다.") - private String name; - - @NotBlank(message = "언어 코드는 필수입니다.") - @Size(min = 2, max = 2, message = "언어 코드는 정확히 2글자여야 합니다.") - private String code; // 언어 코드 (e.g., 'en', 'ko') -}