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 update a Donation entity (via put request). */ export abstract class UpdateDonation { /** * The updated donation's id. * This shouldn't have changed but it is here in case anyone ever wants to enable id changes (whyever they would want to). */ @IsInt() id: number; /** * The updated donation's associated donor's id. * This is important to link donations to donors. */ @IsInt() @IsPositive() donor: number; /** * Creates a new Donation entity from this. */ public abstract update(donation: Donation): 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; } }