import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm"; import { IsInt, IsNotEmpty, IsOptional, IsPostalCode, IsString, } from "class-validator"; import { Participant } from "./Participant"; import { RunnerOrganisation } from "./RunnerOrganisation"; /** * Defines a address (to be used for contact information). */ @Entity() export class Address { /** * Autogenerated unique id (primary key). */ @PrimaryGeneratedColumn() @IsOptional() @IsInt() id: number; /** * The address's description. */ @Column() @IsString() @IsOptional() description?: string; /** * The address's first line. * Containing the street and house number. */ @Column() @IsString() @IsNotEmpty() address1: string; /** * The address's second line. * Containing optional information. */ @Column() @IsString() @IsOptional() address2?: string; /** * The address's postal code. */ @Column() @IsString() @IsNotEmpty() @IsPostalCode("DE") postalcode: string; /** * The address's city. */ @Column() @IsString() @IsNotEmpty() city: string; /** * The address's country. */ @Column() @IsString() @IsNotEmpty() country: string; /** * Used to link the address to participants. */ @OneToMany(() => Participant, participant => participant.address) participants: Participant[]; /** * Used to link the address to runner groups. */ @OneToMany(() => RunnerOrganisation, group => group.address) groups: RunnerOrganisation[]; }