package go.kr.project.common.controller;

import go.kr.project.common.service.AddressService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 주소 검색 관련 컨트롤러
 */
@RestController
@RequestMapping("/common/address")
@RequiredArgsConstructor
@Tag(name = "주소 검색", description = "외부 주소 API 연동 관련")
public class AddressController {

    private final AddressService addressService;

    /**
     * 외부 주소 API를 호출하여 검색 결과를 반환합니다.
     * @param keyword 검색어
     * @param currentPage 현재 페이지
     * @param countPerPage 페이지당 결과 수
     * @return API 응답 결과 (JSON 문자열)
     */
    @GetMapping(value = "/search.ajax", produces = "application/json; charset=UTF-8")
    @Operation(summary = "주소 검색", description = "외부 도로명주소 API를 호출하여 결과를 반환합니다.")
    public String searchAddress(
            @Parameter(description = "검색어") @RequestParam("keyword") String keyword,
            @Parameter(description = "현재 페이지") @RequestParam("currentPage") int currentPage,
            @Parameter(description = "페이지당 결과 수") @RequestParam("countPerPage") int countPerPage) {
        
        return addressService.searchAddress(keyword, currentPage, countPerPage);
    }
}
