Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
coordinate.entity.ts 2.25 KiB
import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  OneToMany,
  ManyToOne,
  PrimaryColumn,
} from 'typeorm';
import {
  Game_PersonEntity,
  ObjectivePointEntity,
  GameEntity,
} from './game.entity';
import { FactionEntity } from './faction.entity';

@Entity('Coordinate')
export class CoordinateEntity {
  @PrimaryColumn('uuid') id: string;

  @OneToMany(
    type => MapDrawingEntity,
    mapDrawings => mapDrawings.mapDrawings_coordinates,
  )
  mapDrawings: MapDrawingEntity[];
  @OneToMany(
    type => Game_PersonEntity,
    game_persons => game_persons.game_person_coordinates,
  )
  game_persons: Game_PersonEntity[];
  @OneToMany(
    type => ObjectivePointEntity,
    objective_points => objective_points.coordinate,
  )
  objective_points: ObjectivePointEntity[];
  @OneToMany(type => MapEntity, maps => maps.coordinate)
  maps: ObjectivePointEntity[];
}

@Entity('Map')
export class MapEntity {
  @PrimaryGeneratedColumn('uuid') mapId: string;

  @ManyToOne(type => CoordinateEntity, coordinate => coordinate.maps)
  coordinate: CoordinateEntity;
  @OneToMany(type => GameEntity, games => games.map)
  games: GameEntity[];
  @OneToMany(type => MapDrawingEntity, mapDrawings => mapDrawings.map)
  mapDrawings: MapDrawingEntity[];
}

@Entity('MapDrawing')
export class MapDrawingEntity {
  @PrimaryGeneratedColumn('uuid') mapDrawingId: string;
  @Column({ type: 'bool' }) drawingIsActive: boolean;
  @Column({ type: 'time' }) drawingValidTill: string;

  @ManyToOne(
    type => CoordinateEntity,
    mapDrawings_coordinates => mapDrawings_coordinates.mapDrawings,
  )
  mapDrawings_coordinates: CoordinateEntity;
  @ManyToOne(type => MapEntity, map => map.mapDrawings)
  map: MapEntity;
  @ManyToOne(
    type => MapDrawingTypeEntity,
    mapDrawingType => mapDrawingType.mapDrawings,
  )
  mapDrawingType: MapEntity;
  @ManyToOne(type => FactionEntity, faction => faction.mapDrawings)
  faction: FactionEntity;
}

@Entity('MapDrawingType')
export class MapDrawingTypeEntity {
  @PrimaryGeneratedColumn('uuid') mapDrawingTypeId: string;
  @Column({ type: 'text' }) drawingTypeName: string;
  @Column({ type: 'text' }) drawingTypeDescription: string;

  @OneToMany(
    type => MapDrawingEntity,
    mapDrawings => mapDrawings.mapDrawingType,
  )
  mapDrawings: MapDrawingEntity[];
}