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
Member