83
									
								
								src/models/entities/Participant.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								src/models/entities/Participant.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity, TableInheritance } from "typeorm"; | ||||
| import { | ||||
|   IsEmail, | ||||
|   IsInt, | ||||
|   IsNotEmpty, | ||||
|   IsOptional, | ||||
|   IsPhoneNumber, | ||||
|   IsPositive, | ||||
|   IsString, | ||||
| } from "class-validator"; | ||||
| import { Address } from "./Address"; | ||||
| import { Donation } from "./Donation"; | ||||
|  | ||||
| /** | ||||
|  * Defines the participant interface. | ||||
| */ | ||||
| @Entity() | ||||
| @TableInheritance({ column: { name: "type", type: "varchar" } }) | ||||
| export abstract class Participant { | ||||
|   /** | ||||
|    * Autogenerated unique id (primary key). | ||||
|    */ | ||||
|   @PrimaryGeneratedColumn() | ||||
|   @IsOptional() | ||||
|   @IsInt() | ||||
|   id: number; | ||||
|  | ||||
|   /** | ||||
|    * The participant's first name. | ||||
|    */ | ||||
|   @Column() | ||||
|   @IsNotEmpty() | ||||
|   @IsString() | ||||
|   firstname: string; | ||||
|  | ||||
|   /** | ||||
|    * The participant's middle name. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsString() | ||||
|   middlename?: string; | ||||
|  | ||||
|   /** | ||||
|    * The participant's last name. | ||||
|    */ | ||||
|   @Column() | ||||
|   @IsNotEmpty() | ||||
|   @IsString() | ||||
|   lastname: string; | ||||
|  | ||||
|   /** | ||||
|    * The participant's address. | ||||
|    * Optional | ||||
|    */ | ||||
|   @ManyToOne(() => Address, address => address.participants, { nullable: true }) | ||||
|   address?: Address; | ||||
|  | ||||
|   /** | ||||
|    * The participant's phone number. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsPhoneNumber("DE") | ||||
|   phone?: string; | ||||
|  | ||||
|   /** | ||||
|    * The participant's email address. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsEmail() | ||||
|   email?: string; | ||||
|  | ||||
|   /** | ||||
|    * Used to link the participant as the donor of a donation. | ||||
|    */ | ||||
|   @OneToMany(() => Donation, donation => donation.donor, { nullable: true }) | ||||
|   donations: Donation[]; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user