import { DataSource } from 'typeorm';
import { BanEntity } from '../../../entities';
import { IsUserBannedQuery } from '../../types';

export async function handleIsUserBanned(query: IsUserBannedQuery, dataSource: DataSource): Promise<boolean> {
  const repo = dataSource.getRepository(BanEntity);
  const now = Date.now();
  const { userId, roomId } = query.payload;
  const rows = await repo
    .createQueryBuilder('ban')
    .where('ban.roomId = :roomId', { roomId })
    .andWhere('(ban.expiresAt IS NULL OR ban.expiresAt > :now)', { now })
    .getMany();

  return rows.some((row) => row.userId === userId || (!row.userId && row.oderId === userId));
}
