[api] CorsController.java 이쪽 컨벤션 맞춰 변경

This commit is contained in:
2026-05-21 18:04:38 +09:00
parent bdaaec4f97
commit 3a4f4679c0
21 changed files with 266 additions and 261 deletions
@@ -1,9 +1,8 @@
package com.alist.api.config.cache;
import com.alist.api.modules.cors.mapper.CorsAllowMapper;
import com.alist.api.modules.cors.vo.CorsOriginCacheVo;
import com.alist.api.modules.cors.mapper.CorsMapper;
import com.alist.api.modules.cors.vo.CorsCacheVo;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -14,13 +13,16 @@ import java.util.stream.Collectors;
@Slf4j
@Component
@RequiredArgsConstructor
public class CorsAllowedOriginsCache {
public class CorsCache {
private final CorsAllowMapper corsAllowMapper;
private final CorsMapper corsMapper;
// Thread-safe List (volatile로 가시성 보장)
private volatile List<String> allowedOrigins = new ArrayList<>();
private volatile List<String> corsOriginList = new ArrayList<>();
public CorsCache(CorsMapper corsMapper) {
this.corsMapper = corsMapper;
}
/**
* 서버 시작 DB에서 전체 CORS 목록 로딩
@@ -28,7 +30,7 @@ public class CorsAllowedOriginsCache {
@PostConstruct
public void loadFromDatabase() {
refresh();
log.info("CORS allowed origins loaded from database");
log.info("CORS allowed origins loaded...");
}
/**
@@ -36,19 +38,19 @@ public class CorsAllowedOriginsCache {
*/
public synchronized void refresh() {
try {
List<String> origins = corsAllowMapper.selectCorsAllowedCacheList()
List<String> corsOriginList = corsMapper.selectCorsCacheList()
.stream()
.filter(Objects::nonNull)
.map(CorsOriginCacheVo::getAllowedOrigin)
.map(CorsCacheVo::getAllowedOrigin)
.filter(Objects::nonNull)
.map(String::trim)
.filter(origin -> !origin.isEmpty())
.distinct()
.collect(Collectors.toList());
this.allowedOrigins = origins;
this.corsOriginList = corsOriginList;
log.info("CORS cache refreshed. Total origins: {}", origins.size());
log.info("CORS cache refreshed. Total origins: {}", corsOriginList.size());
} catch (Exception e) {
log.error("Failed to refresh CORS cache", e);
@@ -60,7 +62,7 @@ public class CorsAllowedOriginsCache {
* @return 허용 도메인 리스트
*/
public List<String> getAllowedOrigins() {
return new ArrayList<>(allowedOrigins);
return new ArrayList<>(corsOriginList);
}
/**
@@ -68,6 +70,6 @@ public class CorsAllowedOriginsCache {
* @return 캐시 상태 정보
*/
public List<String> getCacheStatus() {
return new ArrayList<>(allowedOrigins);
return new ArrayList<>(corsOriginList);
}
}
@@ -1,6 +1,6 @@
package com.alist.api.config.filter;
import com.alist.api.config.cache.CorsAllowedOriginsCache;
import com.alist.api.config.cache.CorsCache;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
@@ -21,7 +21,7 @@ import java.util.List;
@RequiredArgsConstructor
public class DynamicCorsFilter extends OncePerRequestFilter {
private final CorsAllowedOriginsCache corsCache;
private final CorsCache corsCache;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
@@ -1,96 +0,0 @@
package com.alist.api.modules.cors;
import com.alist.api.common.response.ApiResponse;
import com.alist.api.common.response.ApiResponseCode;
import com.alist.api.config.cache.CorsAllowedOriginsCache;
import com.alist.api.modules.cors.form.CorsOriginAddForm;
import com.alist.api.modules.cors.form.CorsOriginDeleteForm;
import com.alist.api.modules.cors.form.CorsOriginSearchForm;
import com.alist.api.modules.cors.service.CorsAllowService;
import com.alist.api.modules.cors.vo.CorsOriginAddVo;
import com.alist.api.modules.cors.vo.CorsOriginDeleteVo;
import com.alist.api.modules.cors.vo.CorsOriginListVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "901. CRS 갱신", description = "테스트 CORS 설정 관리 API")
@RestController
@RequestMapping("/cors")
public class CorsAllowController {
private final CorsAllowedOriginsCache corsCache;
private final CorsAllowService corsAllowService;
public CorsAllowController(CorsAllowedOriginsCache corsCache, CorsAllowService corsAllowService) {
this.corsCache = corsCache;
this.corsAllowService = corsAllowService;
}
@Operation(
summary = "CORS 허용 도메인 목록 조회",
description = "DB에 등록된 CORS 허용 도메인 목록을 검색 조건과 페이징으로 조회합니다."
)
@GetMapping("/list")
public ResponseEntity<ApiResponse<CorsOriginListVo>> corsAllowedList(
@ModelAttribute CorsOriginSearchForm corsOriginSearchForm
) {
CorsOriginListVo result = corsAllowService.selectCorsAllowedList(corsOriginSearchForm.toCorsOriginSearchDto());
if (result.getCorsOriginList() == null || result.getCorsOriginList().isEmpty()) {
return ApiResponse.entity(result, ApiResponseCode.CODE_2003);
}
return ApiResponse.entity(result, ApiResponseCode.CODE_2001, "CORS 허용 도메인");
}
@Operation(
summary = "CORS 허용 도메인 추가",
description = "CORS 허용 도메인을 추가합니다. 추가 후 CORS 캐시를 갱신합니다."
)
@PostMapping("/add")
public ResponseEntity<ApiResponse<CorsOriginAddVo>> addCorsAllowedOrigin(
@Valid @RequestBody CorsOriginAddForm corsOriginAddForm
) {
CorsOriginAddVo result = corsAllowService.insertCorsAllowedOrigin(corsOriginAddForm.toCorsOriginAddDto());
if (!result.isCorsOriginAdded()) {
return ApiResponse.entity(result, ApiResponseCode.CODE_2004, "CORS 허용 도메인");
}
corsCache.refresh();
return ApiResponse.entity(result, ApiResponseCode.CODE_2002, "CORS 허용 도메인");
}
@Operation(
summary = "CORS 화이트리스트 갱신",
description = "DB에서 CORS 허용 도메인 목록을 다시 로딩합니다. DB에 도메인 추가 후 호출하세요."
)
@PostMapping("/reload")
public ResponseEntity<ApiResponse<List<String>>> reloadCors() {
corsCache.refresh();
List<String> cacheStatus = corsCache.getCacheStatus();
return ApiResponse.entity(cacheStatus, ApiResponseCode.CODE_200);
}
@Operation(
summary = "CORS 허용 도메인 삭제",
description = "CORS 허용 도메인 PK 기준으로 삭제 처리합니다. 실제 삭제가 아닌 del_yn 변경 방식입니다."
)
@PatchMapping("/delete")
public ResponseEntity<ApiResponse<CorsOriginDeleteVo>> deleteCorsAllowedOrigin(
@Valid @RequestBody CorsOriginDeleteForm corsOriginDeleteForm
) {
CorsOriginDeleteVo result = corsAllowService.deleteCorsAllowedOrigin(corsOriginDeleteForm.toCorsOriginDeleteDto());
if (!result.isCorsOriginDeleted()) {
return ApiResponse.entity(result, ApiResponseCode.CODE_2003);
}
corsCache.refresh();
return ApiResponse.entity(result, ApiResponseCode.CODE_2005, "CORS 허용 도메인 삭제");
}
}
@@ -0,0 +1,96 @@
package com.alist.api.modules.cors;
import com.alist.api.common.response.ApiResponse;
import com.alist.api.common.response.ApiResponseCode;
import com.alist.api.config.cache.CorsCache;
import com.alist.api.modules.cors.form.CorsAddForm;
import com.alist.api.modules.cors.form.CorsDeleteForm;
import com.alist.api.modules.cors.form.CorsListForm;
import com.alist.api.modules.cors.service.CorsService;
import com.alist.api.modules.cors.vo.CorsAddVo;
import com.alist.api.modules.cors.vo.CorsDeleteVo;
import com.alist.api.modules.cors.vo.CorsListVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "901. CRS 갱신", description = "테스트 CORS 설정 관리 API")
@RestController
@RequestMapping("/cors")
public class CorsController {
private final CorsCache corsCache;
private final CorsService corsService;
public CorsController(CorsCache corsCache, CorsService corsService) {
this.corsCache = corsCache;
this.corsService = corsService;
}
@Operation(
summary = "CORS 허용 도메인 목록 조회"
, description = "DB에 등록된 CORS 허용 도메인 목록을 검색 조건과 페이징으로 조회합니다."
)
@GetMapping("/list")
public ResponseEntity<ApiResponse<CorsListVo>> corsList(
@ModelAttribute CorsListForm corsListForm
) {
CorsListVo corsListVo = corsService.selectCorsList(corsListForm.toDto());
if (corsListVo.getCorsList() == null || corsListVo.getCorsList().isEmpty()) {
return ApiResponse.entity(corsListVo, ApiResponseCode.CODE_2003);
}
return ApiResponse.entity(corsListVo, ApiResponseCode.CODE_2001, "CORS 허용 도메인");
}
@Operation(
summary = "CORS 허용 도메인 추가"
, description = "CORS 허용 도메인을 추가합니다. 추가 후 CORS 캐시를 갱신합니다."
)
@PostMapping("/add")
public ResponseEntity<ApiResponse<CorsAddVo>> corsAdd(
@Valid @RequestBody CorsAddForm corsAddForm
) {
CorsAddVo corsAddVo = corsService.insertCorsAdd(corsAddForm.toDto());
if (!corsAddVo.isProcessed()) {
return ApiResponse.entity(corsAddVo, ApiResponseCode.CODE_2004, "CORS 허용 도메인");
}
corsCache.refresh();
return ApiResponse.entity(corsAddVo, ApiResponseCode.CODE_2002, "CORS 허용 도메인");
}
@Operation(
summary = "CORS 허용 도메인 삭제"
, description = "CORS 허용 도메인 PK 기준으로 삭제 처리합니다. 실제 삭제가 아닌 del_yn 변경 방식입니다."
)
@PatchMapping("/delete")
public ResponseEntity<ApiResponse<CorsDeleteVo>> corsDelete(
@Valid @RequestBody CorsDeleteForm corsDeleteForm
) {
CorsDeleteVo corsDeleteVo = corsService.updateCorsDelete(corsDeleteForm.toDto());
if (!corsDeleteVo.isProcessed()) {
return ApiResponse.entity(corsDeleteVo, ApiResponseCode.CODE_2003);
}
corsCache.refresh();
return ApiResponse.entity(corsDeleteVo, ApiResponseCode.CODE_2005, "CORS 허용 도메인 삭제");
}
@Operation(
summary = "CORS 화이트리스트 갱신"
, description = "DB에서 CORS 허용 도메인 목록을 다시 로딩합니다. DB에 도메인 추가 후 호출하세요."
)
@PostMapping("/reload")
public ResponseEntity<ApiResponse<List<String>>> corsReload() {
corsCache.refresh();
List<String> cacheStatus = corsCache.getCacheStatus();
return ApiResponse.entity(cacheStatus, ApiResponseCode.CODE_200);
}
}
@@ -5,6 +5,6 @@ import lombok.Setter;
@Getter
@Setter
public class CorsOriginAddDto {
public class CorsAddDto {
private String allowedOrigin;
}
@@ -5,6 +5,6 @@ import lombok.Setter;
@Getter
@Setter
public class CorsOriginDeleteDto {
public class CorsDeleteDto {
private Integer corsIdx;
}
@@ -6,6 +6,6 @@ import lombok.Setter;
@Getter
@Setter
public class CorsOriginSearchDto extends PageRequest {
public class CorsListDto extends PageRequest {
private String keyword;
}
@@ -1,6 +1,6 @@
package com.alist.api.modules.cors.form;
import com.alist.api.modules.cors.dto.CorsOriginAddDto;
import com.alist.api.modules.cors.dto.CorsAddDto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
@@ -10,19 +10,19 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 추가 요청 폼")
@Getter
@Setter
public class CorsOriginAddForm {
public class CorsAddForm {
@Schema(description = "CORS 허용 도메인", example = "https://admin.alist.co.kr", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "CORS 허용 도메인은 필수입니다.")
@Pattern(
regexp = "^(\\*|https?://[A-Za-z0-9.-]+(:[0-9]{1,5})?)$",
message = "CORS 허용 도메인은 http(s)://domain 또는 * 형식이어야 합니다."
regexp = "^(\\*|https?://[A-Za-z0-9.-]+(:[0-9]{1,5})?)$"
, message = "CORS 허용 도메인은 http(s)://domain 또는 * 형식이어야 합니다."
)
private String allowedOrigin;
public CorsOriginAddDto toCorsOriginAddDto() {
CorsOriginAddDto corsOriginAddDto = new CorsOriginAddDto();
corsOriginAddDto.setAllowedOrigin(allowedOrigin == null ? null : allowedOrigin.trim());
return corsOriginAddDto;
public CorsAddDto toDto() {
CorsAddDto corsAddDto = new CorsAddDto();
corsAddDto.setAllowedOrigin(allowedOrigin == null ? null : allowedOrigin.trim());
return corsAddDto;
}
}
@@ -1,6 +1,6 @@
package com.alist.api.modules.cors.form;
import com.alist.api.modules.cors.dto.CorsOriginDeleteDto;
import com.alist.api.modules.cors.dto.CorsDeleteDto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
@@ -9,15 +9,15 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 삭제 요청 폼")
@Getter
@Setter
public class CorsOriginDeleteForm {
public class CorsDeleteForm {
@Schema(description = "CORS 허용 도메인 PK", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "CORS 허용 도메인 PK는 필수입니다.")
private Integer corsIdx;
public CorsOriginDeleteDto toCorsOriginDeleteDto() {
CorsOriginDeleteDto corsOriginDeleteDto = new CorsOriginDeleteDto();
corsOriginDeleteDto.setCorsIdx(corsIdx);
return corsOriginDeleteDto;
public CorsDeleteDto toDto() {
CorsDeleteDto corsDeleteDto = new CorsDeleteDto();
corsDeleteDto.setCorsIdx(corsIdx);
return corsDeleteDto;
}
}
@@ -0,0 +1,24 @@
package com.alist.api.modules.cors.form;
import com.alist.api.common.paging.PageRequest;
import com.alist.api.modules.cors.dto.CorsListDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@Schema(description = "CORS 허용 도메인 목록 검색 조건")
@Getter
@Setter
public class CorsListForm extends PageRequest {
@Schema(description = "검색어. CORS 허용 도메인을 대상으로 검색합니다.", example = "alist.co.kr")
private String keyword;
public CorsListDto toDto() {
CorsListDto corsListDto = new CorsListDto();
corsListDto.setPage(getPage());
corsListDto.setSize(getSize());
corsListDto.setKeyword(keyword);
return corsListDto;
}
}
@@ -1,24 +0,0 @@
package com.alist.api.modules.cors.form;
import com.alist.api.common.paging.PageRequest;
import com.alist.api.modules.cors.dto.CorsOriginSearchDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@Schema(description = "CORS 허용 도메인 목록 검색 조건")
@Getter
@Setter
public class CorsOriginSearchForm extends PageRequest {
@Schema(description = "검색어. CORS 허용 도메인을 대상으로 검색합니다.", example = "alist.co.kr")
private String keyword;
public CorsOriginSearchDto toCorsOriginSearchDto() {
CorsOriginSearchDto corsOriginSearchDto = new CorsOriginSearchDto();
corsOriginSearchDto.setPage(getPage());
corsOriginSearchDto.setSize(getSize());
corsOriginSearchDto.setKeyword(keyword);
return corsOriginSearchDto;
}
}
@@ -1,25 +0,0 @@
package com.alist.api.modules.cors.mapper;
import com.alist.api.modules.cors.dto.CorsOriginAddDto;
import com.alist.api.modules.cors.dto.CorsOriginDeleteDto;
import com.alist.api.modules.cors.dto.CorsOriginSearchDto;
import com.alist.api.modules.cors.vo.CorsOriginCacheVo;
import com.alist.api.modules.cors.vo.CorsOriginVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface CorsAllowMapper {
List<CorsOriginCacheVo> selectCorsAllowedCacheList();
List<CorsOriginVo> selectCorsAllowedList(CorsOriginSearchDto corsOriginSearchDto);
int selectCorsAllowedCount(CorsOriginSearchDto corsOriginSearchDto);
int selectCorsAllowedOriginCount(String allowedOrigin);
int insertCorsAllowedOrigin(CorsOriginAddDto corsOriginAddDto);
int deleteCorsAllowedOrigin(CorsOriginDeleteDto corsOriginDeleteDto);
}
@@ -0,0 +1,25 @@
package com.alist.api.modules.cors.mapper;
import com.alist.api.modules.cors.dto.CorsAddDto;
import com.alist.api.modules.cors.dto.CorsDeleteDto;
import com.alist.api.modules.cors.dto.CorsListDto;
import com.alist.api.modules.cors.vo.CorsCacheVo;
import com.alist.api.modules.cors.vo.CorsVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface CorsMapper {
List<CorsCacheVo> selectCorsCacheList();
List<CorsVo> selectCorsList(CorsListDto corsListDto);
int selectCorsListCount(CorsListDto corsListDto);
int selectCorsCount(String allowedOrigin);
int insertCorsAdd(CorsAddDto corsAddDto);
int updateCorsDelete(CorsDeleteDto corsDeleteDto);
}
@@ -1,59 +0,0 @@
package com.alist.api.modules.cors.service;
import com.alist.api.modules.cors.dto.CorsOriginAddDto;
import com.alist.api.modules.cors.dto.CorsOriginDeleteDto;
import com.alist.api.modules.cors.dto.CorsOriginSearchDto;
import com.alist.api.modules.cors.mapper.CorsAllowMapper;
import com.alist.api.modules.cors.vo.CorsOriginAddVo;
import com.alist.api.modules.cors.vo.CorsOriginDeleteVo;
import com.alist.api.modules.cors.vo.CorsOriginListVo;
import com.alist.api.modules.cors.vo.CorsOriginVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class CorsAllowService {
private final CorsAllowMapper corsAllowMapper;
public CorsAllowService(CorsAllowMapper corsAllowMapper) {
this.corsAllowMapper = corsAllowMapper;
}
@Transactional(readOnly = true)
public CorsOriginListVo selectCorsAllowedList(CorsOriginSearchDto corsOriginSearchDto) {
int totalCount = corsAllowMapper.selectCorsAllowedCount(corsOriginSearchDto);
List<CorsOriginVo> corsOriginList = corsAllowMapper.selectCorsAllowedList(corsOriginSearchDto);
CorsOriginListVo result = new CorsOriginListVo();
result.setCorsOriginList(corsOriginList);
result.setPaging(corsOriginSearchDto, totalCount);
return result;
}
@Transactional
public CorsOriginAddVo insertCorsAllowedOrigin(CorsOriginAddDto corsOriginAddDto) {
int duplicateCount = corsAllowMapper.selectCorsAllowedOriginCount(corsOriginAddDto.getAllowedOrigin());
CorsOriginAddVo result = new CorsOriginAddVo();
if (duplicateCount > 0) {
result.setCorsOriginAdded(false);
return result;
}
int insertCount = corsAllowMapper.insertCorsAllowedOrigin(corsOriginAddDto);
result.setCorsOriginAdded(insertCount > 0);
return result;
}
@Transactional
public CorsOriginDeleteVo deleteCorsAllowedOrigin(CorsOriginDeleteDto corsOriginDeleteDto) {
int updateCount = corsAllowMapper.deleteCorsAllowedOrigin(corsOriginDeleteDto);
CorsOriginDeleteVo result = new CorsOriginDeleteVo();
result.setCorsOriginDeleted(updateCount > 0);
return result;
}
}
@@ -0,0 +1,62 @@
package com.alist.api.modules.cors.service;
import com.alist.api.modules.cors.dto.CorsAddDto;
import com.alist.api.modules.cors.dto.CorsDeleteDto;
import com.alist.api.modules.cors.dto.CorsListDto;
import com.alist.api.modules.cors.mapper.CorsMapper;
import com.alist.api.modules.cors.vo.CorsAddVo;
import com.alist.api.modules.cors.vo.CorsDeleteVo;
import com.alist.api.modules.cors.vo.CorsListVo;
import com.alist.api.modules.cors.vo.CorsVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class CorsService {
private final CorsMapper corsMapper;
public CorsService(CorsMapper corsMapper) {
this.corsMapper = corsMapper;
}
@Transactional(readOnly = true)
public CorsListVo selectCorsList(CorsListDto corsListDto) {
int totalCount = corsMapper.selectCorsListCount(corsListDto);
List<CorsVo> corsList = corsMapper.selectCorsList(corsListDto);
CorsListVo corsListVo = new CorsListVo();
corsListVo.setCorsList(corsList);
corsListVo.setPaging(corsListDto, totalCount);
return corsListVo;
}
@Transactional
public CorsAddVo insertCorsAdd(CorsAddDto corsAddDto) {
int duplicateCount = corsMapper.selectCorsCount(corsAddDto.getAllowedOrigin());
CorsAddVo corsAddVo = new CorsAddVo();
if (duplicateCount > 0) {
corsAddVo.setProcessed(false);
return corsAddVo;
}
int insertCount = corsMapper.insertCorsAdd(corsAddDto);
corsAddVo.setProcessed(insertCount > 0);
return corsAddVo;
}
@Transactional
public CorsDeleteVo updateCorsDelete(CorsDeleteDto corsDeleteDto) {
int updateCount = corsMapper.updateCorsDelete(corsDeleteDto);
CorsDeleteVo corsDeleteVo = new CorsDeleteVo();
corsDeleteVo.setProcessed(updateCount > 0);
return corsDeleteVo;
}
}
@@ -7,7 +7,7 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 추가 응답")
@Getter
@Setter
public class CorsOriginAddVo {
public class CorsAddVo {
@Schema(description = "CORS 허용 도메인 추가 여부", example = "true")
private boolean corsOriginAdded;
private boolean processed;
}
@@ -7,7 +7,7 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 캐시 항목")
@Getter
@Setter
public class CorsOriginCacheVo {
public class CorsCacheVo {
@Schema(description = "CORS 허용 도메인", example = "https://admin.alist.co.kr")
private String allowedOrigin;
}
@@ -7,7 +7,7 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 삭제 응답")
@Getter
@Setter
public class CorsOriginDeleteVo {
public class CorsDeleteVo {
@Schema(description = "CORS 허용 도메인 삭제 여부", example = "true")
private boolean corsOriginDeleted;
private boolean processed;
}
@@ -10,7 +10,7 @@ import java.util.List;
@Schema(description = "CORS 허용 도메인 목록 조회 응답")
@Getter
@Setter
public class CorsOriginListVo extends PageResponse {
public class CorsListVo extends PageResponse {
@Schema(description = "CORS 허용 도메인 목록")
private List<CorsOriginVo> corsOriginList;
private List<CorsVo> corsList;
}
@@ -7,7 +7,7 @@ import lombok.Setter;
@Schema(description = "CORS 허용 도메인 목록 항목")
@Getter
@Setter
public class CorsOriginVo {
public class CorsVo {
@Schema(description = "CORS 허용 도메인 PK", example = "1")
private Integer corsIdx;
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alist.api.modules.cors.mapper.CorsAllowMapper">
<sql id="corsAllowedWhere">
<mapper namespace="com.alist.api.modules.cors.mapper.CorsMapper">
<sql id="corsWhere">
FROM ALISTLMS.test_cors_allowed_list
WHERE del_yn = 1
AND allowed_origin IS NOT NULL
@@ -11,24 +11,24 @@
</if>
</sql>
<select id="selectCorsAllowedList" resultType="com.alist.api.modules.cors.vo.CorsOriginVo">
/* CorsMapper.selectCorsAllowedList */
<select id="selectCorsList" resultType="com.alist.api.modules.cors.vo.CorsVo">
/*CorsMapper.selectCorsList*/
SELECT cors_idx
, allowed_origin
<include refid="corsAllowedWhere"/>
<include refid="corsWhere"/>
ORDER BY cors_idx DESC
LIMIT #{limit}
OFFSET #{offset}
</select>
<select id="selectCorsAllowedCount" resultType="int">
/* CorsAllowMapper.selectCorsAllowedCount */
<select id="selectCorsListCount" resultType="int">
/*CorsMapper.selectCorsListCount*/
SELECT COUNT(*)
<include refid="corsAllowedWhere"/>
<include refid="corsWhere"/>
</select>
<select id="selectCorsAllowedCacheList" resultType="com.alist.api.modules.cors.vo.CorsOriginCacheVo">
/* CorsAllowMapper.selectCorsAllowedCacheList */
<select id="selectCorsCacheList" resultType="com.alist.api.modules.cors.vo.CorsCacheVo">
/*CorsMapper.selectCorsCacheList*/
SELECT allowed_origin
FROM ALISTLMS.test_cors_allowed_list
WHERE del_yn = 1
@@ -36,16 +36,16 @@
ORDER BY cors_idx
</select>
<select id="selectCorsAllowedOriginCount" parameterType="string" resultType="int">
/* CorsAllowMapper.selectCorsAllowedOriginCount */
<select id="selectCorsCount" parameterType="string" resultType="int">
/*CorsMapper.selectCorsCount*/
SELECT COUNT(1)
FROM ALISTLMS.test_cors_allowed_list
WHERE del_yn = 1
AND allowed_origin = #{allowedOrigin}
</select>
<insert id="insertCorsAllowedOrigin" parameterType="com.alist.api.modules.cors.dto.CorsOriginAddDto">
/* CorsAllowMapper.insertCorsAllowedOrigin */
<insert id="insertCorsAdd" parameterType="com.alist.api.modules.cors.dto.CorsAddDto">
/*CorsMapper.insertCorsAdd*/
INSERT INTO ALISTLMS.test_cors_allowed_list (
allowed_origin
, del_yn
@@ -55,8 +55,8 @@
)
</insert>
<update id="deleteCorsAllowedOrigin">
/* CorsAllowMapper.deleteCorsAllowedOrigin */
<update id="updateCorsDelete">
/*CorsMapper.updateCorsDelete*/
UPDATE ALISTLMS.test_cors_allowed_list
SET del_yn = 0
WHERE cors_idx = #{corsIdx}