package com.zioinfo.esn.auth.mapper;

import com.zioinfo.esn.auth.EsnUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 로그인 보조 3종(회원가입·아이디찾기·비번초기화)용 esn_user 매퍼.
 * 기존 2FA 로그인 매퍼(UserAuthMapper)와 분리 — 회귀 0.
 * 보안: 임시비번/자격증명은 응답·로그(코드 외)로 노출하지 않는다(불변규칙).
 */
@Mapper
public interface UserSignupMapper {

    /** 가입 중복 검사: username 존재 여부. */
    int countByUsername(@Param("username") String username);

    /** 가입 중복 검사: email 존재 여부. */
    int countByEmail(@Param("email") String email);

    /** 회원가입(승인 대기): role='USER', approved=false, is_active=true 고정 INSERT. */
    int insertSignup(EsnUser user);

    /** 아이디찾기: 표시명(display_name)+이메일 일치 사용자(존재 시 마스킹 반환). */
    EsnUser findByDisplayNameAndEmail(@Param("displayName") String displayName,
                                      @Param("email") String email);

    /** 비번초기화: username+email 동시 일치 검증용. */
    EsnUser findByUsernameAndEmail(@Param("username") String username,
                                   @Param("email") String email);

    /** 비번초기화: 임시비번 적용 + 변경유도 + 잠금/실패카운트 해제(멱등 UPDATE). */
    int applyTempPassword(@Param("username") String username,
                          @Param("passwordHash") String passwordHash);
}
