Skip to content
Snippets Groups Projects
game.dto.ts 1.42 KiB
Newer Older
import {
  IsNotEmpty,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsString,
  IsDate,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsInt,
  Min,
  Max,
  IsArray,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsJSON,
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  IsDateString,
L4168's avatar
L4168 committed
  IsNumber,
} from 'class-validator';
import { Timestamp } from 'typeorm';
Samuli Virtapohja's avatar
Samuli Virtapohja committed
import { ObjectivePointEntity } from './game.entity';

export class GameDTO {
  @IsString()
  @IsNotEmpty()
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @Length(3, 30)
  name: string;
  @IsNotEmpty()
  @Length(1, 255)
  desc: string;
L4168's avatar
L4168 committed
  @IsNotEmpty()
  //@IsJSON()
  center: JSON;
  //@IsJSON()
L4168's avatar
L4168 committed
  // doesn't accept with IsJSON, WIP to get validation for map and center
  // IsJSON checks with json.parse, expecting string
  map?: JSON;
L4168's avatar
L4168 committed
  nodesettings?: JSON;
  @IsDateString()
  @IsNotEmpty()
  startdate: string;
  @IsDateString()
  @IsNotEmpty()
  enddate: string;
  // custom validation for array length (arr>min, arr<max)
  //@Validate(ArrayLength, [4, 8])
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  factions?: FactionDTO[];
L4168's avatar
L4168 committed
  objective_points?: FlagboxDTO[];
}

export class FactionDTO {
  @IsString()
  @IsNotEmpty()
  @Length(2, 15)
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  factionName: string;
  factionPassword: string;
L4168's avatar
L4168 committed
  multiplier?: number;
  game: GameDTO;
}
L4168's avatar
L4168 committed
export class FlagboxDTO {
  @IsString()
  @IsNotEmpty()
  @Length(7)
  objectivePointDescription: string;
  @IsNumber()
  objectivePointMultiplier: number;
}

export class FlagboxEventDTO {
  node_id: string;
  owner: number;
  action: number;
  capture: number;
L4168's avatar
L4168 committed
  oP_HistoryTimestamp?: string;
  objective_point?: ObjectivePointEntity;
L4168's avatar
L4168 committed
}

export class GameGroupDTO {
  @IsString()
  @Length(3, 31)
  name: string;
L4168's avatar
L4168 committed
}