diff --git a/src/models/entities/Address.ts b/src/models/entities/Address.ts index 561808f..dbb7eb3 100644 --- a/src/models/entities/Address.ts +++ b/src/models/entities/Address.ts @@ -80,4 +80,11 @@ export class Address { */ @OneToMany(() => IAddressUser, addressUser => addressUser.address, { nullable: true }) addressUsers: IAddressUser[]; + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } diff --git a/src/models/entities/DistanceDonation.ts b/src/models/entities/DistanceDonation.ts index d263e90..6b9ba5d 100644 --- a/src/models/entities/DistanceDonation.ts +++ b/src/models/entities/DistanceDonation.ts @@ -39,4 +39,11 @@ export class DistanceDonation extends Donation { } return calculatedAmount; } + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } diff --git a/src/models/entities/Donation.ts b/src/models/entities/Donation.ts index eea23b5..46d7d45 100644 --- a/src/models/entities/Donation.ts +++ b/src/models/entities/Donation.ts @@ -32,4 +32,11 @@ export abstract class Donation { * The exact implementation may differ for each type of donation. */ abstract amount: number; + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } \ No newline at end of file diff --git a/src/models/entities/Donor.ts b/src/models/entities/Donor.ts index 188ed09..01b365c 100644 --- a/src/models/entities/Donor.ts +++ b/src/models/entities/Donor.ts @@ -1,5 +1,6 @@ import { IsBoolean } from "class-validator"; import { ChildEntity, Column, OneToMany } from "typeorm"; +import { ResponseDonor } from '../responses/ResponseDonor'; import { Donation } from './Donation'; import { Participant } from "./Participant"; @@ -22,4 +23,11 @@ export class Donor extends Participant { */ @OneToMany(() => Donation, donation => donation.donor, { nullable: true }) donations: Donation[]; + + /** + * Turns this entity into it's response class. + */ + public toResponse(): ResponseDonor { + return new ResponseDonor(this); + } } \ No newline at end of file diff --git a/src/models/entities/FixedDonation.ts b/src/models/entities/FixedDonation.ts index db53e2f..6a32066 100644 --- a/src/models/entities/FixedDonation.ts +++ b/src/models/entities/FixedDonation.ts @@ -16,4 +16,11 @@ export class FixedDonation extends Donation { @IsInt() @IsPositive() amount: number; + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } \ No newline at end of file diff --git a/src/models/entities/GroupContact.ts b/src/models/entities/GroupContact.ts index 4dbcc5e..f650259 100644 --- a/src/models/entities/GroupContact.ts +++ b/src/models/entities/GroupContact.ts @@ -81,4 +81,11 @@ export class GroupContact implements IAddressUser { */ @OneToMany(() => RunnerGroup, group => group.contact, { nullable: true }) groups: RunnerGroup[]; + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } \ No newline at end of file diff --git a/src/models/entities/IAddressUser.ts b/src/models/entities/IAddressUser.ts index 3a7762a..3d8eaf9 100644 --- a/src/models/entities/IAddressUser.ts +++ b/src/models/entities/IAddressUser.ts @@ -12,4 +12,9 @@ export abstract class IAddressUser { @ManyToOne(() => Address, address => address.addressUsers, { nullable: true }) address?: Address + + /** + * Turns this entity into it's response class. + */ + public abstract toResponse(); } diff --git a/src/models/entities/Participant.ts b/src/models/entities/Participant.ts index de13b5f..fa40a8f 100644 --- a/src/models/entities/Participant.ts +++ b/src/models/entities/Participant.ts @@ -9,6 +9,7 @@ import { } from "class-validator"; import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm"; import { config } from '../../config'; +import { ResponseParticipant } from '../responses/ResponseParticipant'; import { Address } from "./Address"; import { IAddressUser } from './IAddressUser'; @@ -74,4 +75,9 @@ export abstract class Participant implements IAddressUser { @IsOptional() @IsEmail() email?: string; + + /** + * Turns this entity into it's response class. + */ + public abstract toResponse(): ResponseParticipant; } \ No newline at end of file diff --git a/src/models/entities/Permission.ts b/src/models/entities/Permission.ts index 6a07312..4bba550 100644 --- a/src/models/entities/Permission.ts +++ b/src/models/entities/Permission.ts @@ -6,6 +6,7 @@ import { import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; import { PermissionAction } from '../enums/PermissionAction'; import { PermissionTarget } from '../enums/PermissionTargets'; +import { ResponsePermission } from '../responses/ResponsePermission'; import { Principal } from './Principal'; /** * Defines the Permission entity. @@ -51,4 +52,11 @@ export class Permission { public toString(): string { return this.target + ":" + this.action; } + + /** + * Turns this entity into it's response class. + */ + public toResponse(): ResponsePermission { + return new ResponsePermission(this); + } } \ No newline at end of file diff --git a/src/models/entities/Runner.ts b/src/models/entities/Runner.ts index 5c51c11..f391103 100644 --- a/src/models/entities/Runner.ts +++ b/src/models/entities/Runner.ts @@ -1,5 +1,6 @@ import { IsInt, IsNotEmpty } from "class-validator"; import { ChildEntity, ManyToOne, OneToMany } from "typeorm"; +import { ResponseRunner } from '../responses/ResponseRunner'; import { DistanceDonation } from "./DistanceDonation"; import { Participant } from "./Participant"; import { RunnerCard } from "./RunnerCard"; @@ -66,4 +67,11 @@ export class Runner extends Participant { public get distanceDonationAmount(): number { return this.distanceDonations.reduce((sum, current) => sum + current.amountPerDistance, 0) * this.distance; } + + /** + * Turns this entity into it's response class. + */ + public toResponse(): ResponseRunner { + return new ResponseRunner(this); + } } \ No newline at end of file diff --git a/src/models/entities/RunnerCard.ts b/src/models/entities/RunnerCard.ts index 5f48257..4ea40e2 100644 --- a/src/models/entities/RunnerCard.ts +++ b/src/models/entities/RunnerCard.ts @@ -57,4 +57,11 @@ export class RunnerCard { */ @OneToMany(() => TrackScan, scan => scan.track, { nullable: true }) scans: TrackScan[]; + + /** + * Turns this entity into it's response class. + */ + public toResponse() { + return new Error("NotImplemented"); + } } diff --git a/src/models/entities/RunnerGroup.ts b/src/models/entities/RunnerGroup.ts index b5bcfcd..5620aca 100644 --- a/src/models/entities/RunnerGroup.ts +++ b/src/models/entities/RunnerGroup.ts @@ -5,6 +5,7 @@ import { IsString } from "class-validator"; import { Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, TableInheritance } from "typeorm"; +import { ResponseRunnerGroup } from '../responses/ResponseRunnerGroup'; import { GroupContact } from "./GroupContact"; import { Runner } from "./Runner"; @@ -60,4 +61,9 @@ export abstract class RunnerGroup { public get distanceDonationAmount(): number { return this.runners.reduce((sum, current) => sum + current.distanceDonationAmount, 0); } + + /** + * Turns this entity into it's response class. + */ + public abstract toResponse(): ResponseRunnerGroup; } \ No newline at end of file