package com.zioinfo.mes.admin.mapper;

import com.zioinfo.mes.auth.MesUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/** 관리자 사용자 관리 매퍼 (mes_user). @Mapper 필수. */
@Mapper
public interface AdminUserMapper {

    List<MesUser> findAll();

    MesUser findById(@Param("id") Long id);

    int insert(MesUser user);

    int updateRole(@Param("id") Long id, @Param("role") String role);

    int updateActive(@Param("id") Long id, @Param("active") boolean active);

    int updatePassword(@Param("id") Long id, @Param("passwordHash") String passwordHash);

    /** 관리자 OTP 초기화: 시크릿 폐기 + otp_enabled=false(다음 로그인 시 재등록 유도). 시크릿 미노출. */
    int clearOtp(@Param("id") Long id);

    int deleteById(@Param("id") Long id);

    /** 활성 SUPERADMIN 계정 수 (마지막 관리자 삭제/강등 방지용). */
    int countSuperAdmins();

    int countByUsername(@Param("username") String username);
}
