package com.example.demo.repository;

import java.time.LocalDateTime;
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.example.demo.model.UserMembership;

@Repository
public interface UserMembershipRepository extends JpaRepository<UserMembership, Long> {
    Optional<UserMembership> findByUserIdAndStatus(Long userId, String status);
    
    /**
     * 按到期时间降序查找用户的有效会员记录（返回到期时间最晚的）
     */
    Optional<UserMembership> findFirstByUserIdAndStatusOrderByEndDateDesc(Long userId, String status);
    
    long countByStatus(String status);
    
    long countByStartDateBetween(LocalDateTime startDate, LocalDateTime endDate);
    
    /**
     * 统计指定时间之前开始的会员数（用于累计统计）
     */
    long countByStartDateBefore(LocalDateTime beforeTime);
    
    // 根据用户ID删除会员信息
    void deleteByUserId(Long userId);
    
    /**
     * 查找已过期但状态仍为ACTIVE的会员记录
     */
    java.util.List<UserMembership> findByStatusAndEndDateBefore(String status, LocalDateTime endDate);
}
