package com.ga.core.mapper.notice;

import com.ga.core.vo.notice.UserNotificationResp;
import com.ga.core.vo.notice.UserNotificationSearchParam;
import com.ga.core.vo.notice.UserNotificationVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * user_notification Mapper.
 */
@Mapper
public interface UserNotificationMapper {

    UserNotificationResp selectById(@Param("notificationId") Long notificationId);

    List<UserNotificationResp> selectList(UserNotificationSearchParam param);

    /**
     * 읽지 않은 알림 수 조회 — 상단 알림 벨 카운트 용도.
     */
    int selectUnreadCount(@Param("userId") Long userId);

    /**
     * 단건 읽음 처리.
     * user_id 검증 포함 (타인 알림 접근 방지).
     */
    int markRead(@Param("notificationId") Long notificationId, @Param("userId") Long userId);

    /** 사용자 전체 읽음 처리 */
    int markAllRead(@Param("userId") Long userId);

    int insert(UserNotificationVO vo);

    int delete(@Param("notificationId") Long notificationId);
}
