import { IsNotEmpty, IsString, IsDate, Length, IsInt, Min, Max, IsArray, IsJSON, IsDateString, IsNumber, } from 'class-validator'; import { Timestamp } from 'typeorm'; import { ObjectivePointEntity } from './game.entity'; export class GameDTO { @IsString() @IsNotEmpty() @Length(3, 30) name: string; @IsNotEmpty() @Length(1, 255) desc: string; @IsNotEmpty() //@IsJSON() center: JSON; //@IsJSON() // doesn't accept with IsJSON, WIP to get validation for map and center // IsJSON checks with json.parse, expecting string map?: JSON; nodesettings?: JSON; @IsDateString() @IsNotEmpty() startdate: string; @IsDateString() @IsNotEmpty() enddate: string; // custom validation for array length (arr>min, arr<max) //@Validate(ArrayLength, [4, 8]) factions?: FactionDTO[]; objective_points?: FlagboxDTO[]; } export class FactionDTO { @IsString() @IsNotEmpty() @Length(2, 15) factionName: string; factionPassword: string; multiplier: number; game: GameDTO; } export class FlagboxDTO { @IsString() @IsNotEmpty() @Length(7) objectivePointDescription: string; @IsNumber() objectivePointMultiplier: number; } export class FlagboxEventDTO { node_id: string; owner: number; action: number; capture: number; oP_HistoryTimestamp?: string objective_point?: ObjectivePointEntity } export class GameGroupDTO { @IsString() @Length(3, 31) name: string; }