import { getPrismaClient } from '../../config/database.config';
import { BaseRepository } from '../common/repository';

/**
 * EN: Session repository
 * VI: Repository session
 */
export class SessionRepository extends BaseRepository<any, any, any> {
  constructor() {
    super(getPrismaClient(), 'session');
  }

  /**
   * EN: Find active sessions for user
   * VI: Tìm sessions đang hoạt động của người dùng
   */
  async findActiveSessions(userId: string): Promise<any[]> {
    return this.prisma.session.findMany({
      where: {
        userId,
        isActive: true,
        expiresAt: { gt: new Date() },
      },
      orderBy: { lastActivityAt: 'desc' },
    });
  }

  /**
   * EN: Clean expired sessions
   * VI: Dọn dẹp sessions hết hạn
   */
  async cleanExpired(): Promise<number> {
    const result = await this.prisma.session.deleteMany({
      where: {
        expiresAt: { lt: new Date() },
      },
    });
    return result.count;
  }
}
