import { DataSource } from 'typeorm';
import { BanEntity } from '../../../entities';
import { GetBansForRoomQuery } from '../../types';
import { rowToBan } from '../../mappers';

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

  return rows.map(rowToBan);
}
