package com.zioinfo.cms.admin.mapper;

import com.zioinfo.cms.auth.CmsUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 관리자 사용자 관리 매퍼 (cms_user).
 *
 * <p>@Mapper 필수 — MyBatisConfig 가 annotationClass=Mapper.class 로 스캔.
 */
@Mapper
public interface AdminUserMapper {

    List<CmsUser> findAll();

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

    int insert(CmsUser 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);

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

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

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

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