import { entities } from 'nes-core';
import { repositories } from 'nes-core';
import * as LokiJS from 'lokijs';
import * as uuidV4 from 'uuid/v4';

export default class SimulationRepository implements repositories.SimulationRepository {
  constructor(private collection: LokiCollection<{}>) {}

  create(name: string): Promise<entities.Simulation> {
    return Promise.resolve(this.collection
      .insert({
        id: uuidV4(),
        name: name,
        map: null
      }) as entities.Simulation);
  }

  get(simulationId: string): Promise<entities.Simulation> {
    return Promise.resolve(this.collection
      .by('id', simulationId) as entities.Simulation);
  }

  addMap(simulationId: string, map: entities.SimulationMap): Promise<void> {
    const simulation: entities.Simulation = this.collection
      .by('id', simulationId) as entities.Simulation;

    if (simulation) {
      simulation.map = map;
      this.collection.update(simulation);
    }

    return Promise.resolve();
  }
}
