Skip to content
Snippets Groups Projects
game.dto.ts 1.1 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,
} from 'class-validator';
import { Timestamp } from 'typeorm';

export class GameDTO {
  @IsString()
  @IsNotEmpty()
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @Length(3, 30)
  name: string;
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  gameDescription?: string;
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @IsDate()
  @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;
  @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[];
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @IsArray()
  @IsNotEmpty()
  objectivePoint?: ObjectivePointDTO[];
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @IsJSON()
  @IsNotEmpty()
  mapCoordinates: JSON;
}

export class FactionDTO {
  @IsString()
  @IsNotEmpty()
  @Length(2, 15)
  name: string;
  id: string;
  game: GameDTO;
Samuli Virtapohja's avatar
Samuli Virtapohja committed
  password: string;

export class GameGroupDTO {
  @IsString()
  @Length(3, 31)
  name: string;
}