import { PrimaryGeneratedColumn, Column, ManyToOne, Entity } from "typeorm"; import { IsBoolean, IsInt, IsNotEmpty, IsOptional, IsPositive, } from "class-validator"; import { Runner } from "./Runner"; /** * Defines the scan interface. */ @Entity() export abstract class Scan { /** * Autogenerated unique id (primary key). */ @PrimaryGeneratedColumn() @IsOptional() @IsInt() id: number; /** * The associated runner. */ @IsNotEmpty() @ManyToOne(() => Runner, runner => runner.scans, { nullable: true }) runner: Runner; /** * The scan's distance in meters. */ @IsInt() @IsPositive() abstract distance: number; /** * Is the scan valid (for fraud reasons). * Default: true */ @Column() @IsBoolean() valid: boolean = true; /** * seconds since last scan */ @IsInt() @IsOptional() secondsSinceLastScan: number; }