import {
  ArrayMaxSize,
  IsArray,
  IsEmail,
  IsOptional,
  IsString,
} from 'class-validator';
import type { MasterUser } from './master-user.dto';

export class BatchFetchUsersDto {
  @IsOptional()
  @IsArray()
  @ArrayMaxSize(200)
  @IsString({ each: true })
  uuids?: string[];

  @IsOptional()
  @IsArray()
  @ArrayMaxSize(200)
  @IsEmail({}, { each: true })
  emails?: string[];
}

export interface BatchFetchByUuidResult {
  requestedUuid: string;
  user: MasterUser;
}

export interface BatchFetchByEmailResult {
  requestedEmail: string;
  user: MasterUser;
}

export interface BatchFetchUsersResponse {
  foundByUuid: BatchFetchByUuidResult[];
  foundByEmail: BatchFetchByEmailResult[];
  notFoundUuids: string[];
  notFoundEmails: string[];
}
