package com.qqchen.deploy.backend.deploy.repository;

import com.qqchen.deploy.backend.deploy.entity.SSHAuditLog;
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

/**
 * SSH审计日志Repository
 */
@Repository
public interface ISSHAuditLogRepository extends IBaseRepository<SSHAuditLog, Long> {
    
    /**
     * 根据会话ID查询审计日志
     */
    SSHAuditLog findBySessionId(String sessionId);
    
    /**
     * 统计用户当前活跃的SSH会话数
     */
    long countByUserIdAndDisconnectTimeIsNull(Long userId);
    
    /**
     * 统计用户对指定服务器当前活跃的SSH会话数
     */
    long countByUserIdAndServerIdAndDisconnectTimeIsNull(Long userId, Long serverId);
    
    /**
     * 逻辑删除指定服务器的所有审计日志
     * 使用 @Modifying 注解执行批量更新
     */
    @Modifying
    @Query("UPDATE SSHAuditLog a SET a.deleted = true WHERE a.serverId = :serverId")
    void deleteByServerId(@Param("serverId") Long serverId);
}
