import { IsInt, IsPositive } from 'class-validator'; import { getConnection } from 'typeorm'; import { DonorNotFoundError } from '../../../errors/DonorErrors'; import { Donation } from '../../entities/Donation'; import { Donor } from '../../entities/Donor'; /** * This class is used to create a new Donation entity from a json body (post request). */ export abstract class CreateDonation { /** * The donation's associated donor. * This is important to link donations to donors. */ @IsInt() @IsPositive() donor: number; /** * Creates a new Donation entity from this. */ public abstract toEntity(): Promise; /** * Gets a donor based on the donor id provided via this.donor. */ public async getDonor(): Promise { const donor = await getConnection().getRepository(Donor).findOne({ id: this.donor }); if (!donor) { throw new DonorNotFoundError(); } return donor; } }