import { IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator'; import { getConnectionManager } from 'typeorm'; import { GroupContactNotFoundError, GroupContactWrongTypeError } from '../../errors/GroupContactErrors'; import { GroupContact } from '../entities/GroupContact'; export abstract class CreateRunnerGroup { /** * The group's name. */ @IsNotEmpty() @IsString() name: string; /** * The group's contact. * Optional */ @IsInt() @IsOptional() contact?: number; /** * Get's this group's contact from this.address. */ public async getContact(): Promise { if (this.contact === undefined || this.contact === null) { return null; } if (!isNaN(this.contact)) { let contact = await getConnectionManager().get().getRepository(GroupContact).findOne({ id: this.contact }); if (!contact) { throw new GroupContactNotFoundError; } return contact; } throw new GroupContactWrongTypeError; } }