storage.js

🧩 Syntax:
import PlayerStorage from './PlayerStorage.js';
import TeamStorage from './TeamStorage.js';
import TournamentStorage from './TournamentStorage.js';

export default class Store {
  constructor() {
    this.playerStorage = new PlayerStorage();
    this.teamStorage = new TeamStorage(this.playerStorage);
    this.tournamentStorage = new TournamentStorage();
    this.currentEditingPlayerId = null;
  }

  getPlayerDatabase() {
    return this.playerStorage.getPlayerDatabase();
  }

  getTeamDatabase() {
    return this.teamStorage.getTeamDatabase();
  }

  getTournamentDatabase() {
    return this.tournamentStorage.getTournamentDatabase();
  }

  addPlayer(player) {
    this.playerStorage.addPlayer(player);
  }

  editPlayer(updatedPlayer) {
    this.playerStorage.editPlayer(updatedPlayer);
    if (updatedPlayer.teamId) {
      const team = this.teamStorage.getTeamDatabase().find(t => t.id === updatedPlayer.teamId);
      if (team && !team.playerIds.includes(updatedPlayer.id)) {
        team.playerIds.push(updatedPlayer.id);
        this.teamStorage.editTeam(team.id, team);
      }
    }
  }

  deletePlayer(playerId) {
    const player = this.playerStorage.getPlayerDatabase().find(p => p.id === playerId);
    if (player && player.teamId) {
      const team = this.teamStorage.getTeamDatabase().find(t => t.id === player.teamId);
      if (team) {
        team.playerIds = team.playerIds.filter(pid => pid !== playerId);
        if (team.captainId === playerId) {
          team.captainId = null;
        }
        this.teamStorage.editTeam(team.id, team);
      }
    }
    this.playerStorage.deletePlayer(playerId);
  }

  addTeam(team) {
    this.teamStorage.addTeam(team);
  }

  editTeam(teamId, teamData) {
    this.teamStorage.editTeam(teamId, teamData);
  }

  deleteTeam(teamId) {
    this.tournamentStorage.getTournamentDatabase().forEach(tournament => {
      if (tournament.checkedInTeams.includes(teamId)) {
        tournament.checkedInTeams = tournament.checkedInTeams.filter(tid => tid !== teamId);
        this.tournamentStorage.editTournament(tournament.id, tournament);
      }
    });
    this.teamStorage.deleteTeam(teamId);
  }

  addTournament(tournament) {
    this.tournamentStorage.addTournament(tournament);
  }

  editTournament(tournamentId, updatedTournament) {
    this.tournamentStorage.editTournament(tournamentId, updatedTournament);
  }

  deleteTournament(tournamentId) {
    this.teamStorage.getTeamDatabase().forEach(team => {
      if (team.checkedInTournaments.includes(tournamentId)) {
        team.checkedInTournaments = team.checkedInTournaments.filter(tid => tid !== tournamentId);
        this.teamStorage.editTeam(team.id, team);
      }
    });
    this.tournamentStorage.deleteTournament(tournamentId);
  }

  generateTournamentId() {
    return this.tournamentStorage.generateTournamentId();
  }

  testLocalStorage() {
    console.log('Testing localStorage');
    try {
      const testData = { test: 'test' };
      localStorage.setItem('testKey', JSON.stringify(testData));
      const retrieved = localStorage.getItem('testKey');
      console.log('Test data saved and retrieved:', retrieved);
      localStorage.removeItem('testKey');
    } catch (error) {
      console.error('localStorage test failed:', error);
    }
  }
}
Cubefive

Cubefive

Member