Skip to content
Snippets Groups Projects
game.dto.ts 1.02 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,
} 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;
  @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[];
}

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

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