package com.erp.tenant;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 테넌트 서브도메인 검증용 공개 API.
 * 로그인 전 프론트 TenantGuard 가 "회사 존재 여부" 체크에 사용.
 *
 * GET /api/tenant/check?subdomain=qnc
 *   → { "subdomain": "qnc", "exists": true }
 *
 * SecurityConfig 에서 /api/** 전부 permitAll 이라 별도 설정 불필요.
 * 메타 DB 로 강제 라우팅해야 테넌트 DB context 가 섞이지 않음.
 */
@RestController
@RequestMapping("/api/tenant")
@RequiredArgsConstructor
@Slf4j
public class TenantController {

    private final CompanyResolver companyResolver;

    @GetMapping("/check")
    public Map<String, Object> check(@RequestParam("subdomain") String subdomain) {
        DbContextHolder.setMeta();
        try {
            String dbName = companyResolver.resolveDbName(subdomain);
            Map<String, Object> res = new LinkedHashMap<>();
            res.put("subdomain", subdomain);
            res.put("exists", dbName != null);
            return res;
        } finally {
            DbContextHolder.clear();
        }
    }
}
