From f78f4e64f52cf5941090eedb6d56bdc6d25b7fde Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 23 Sep 2021 17:25:43 +0200 Subject: [PATCH] Ensure deletion of speech times if related faction is deleted --- .../administration/factions/factions.component.ts | 5 ++++- .../src/app/auth/shared/speech-time.service.ts | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/projects/speech-statistics/src/app/auth/administration/factions/factions.component.ts b/projects/speech-statistics/src/app/auth/administration/factions/factions.component.ts index 1bc3c39..db1a4f9 100644 --- a/projects/speech-statistics/src/app/auth/administration/factions/factions.component.ts +++ b/projects/speech-statistics/src/app/auth/administration/factions/factions.component.ts @@ -3,6 +3,7 @@ import {AngularFireDatabase, SnapshotAction} from '@angular/fire/compat/database import {Observable} from 'rxjs'; import {Faction} from './faction'; import {FactionInBodyService} from '../../shared/faction-in-body.service'; +import {SpeechTimeService} from '../../shared/speech-time.service'; @Component({ selector: 'app-factions', @@ -13,7 +14,8 @@ export class FactionsComponent implements OnInit { public factions: Observable[]> = new Observable[]>(); constructor(private database: AngularFireDatabase, - private factionInBodyService: FactionInBodyService) { + private factionInBodyService: FactionInBodyService, + private speechTimeService: SpeechTimeService) { } ngOnInit(): void { @@ -33,6 +35,7 @@ export class FactionsComponent implements OnInit { if (key != null) { factionRef.remove(key); this.factionInBodyService.deleteFactions(key); + this.speechTimeService.deleteSpeechTimesOfFaction(key); } } } diff --git a/projects/speech-statistics/src/app/auth/shared/speech-time.service.ts b/projects/speech-statistics/src/app/auth/shared/speech-time.service.ts index b42edd8..239bade 100644 --- a/projects/speech-statistics/src/app/auth/shared/speech-time.service.ts +++ b/projects/speech-statistics/src/app/auth/shared/speech-time.service.ts @@ -34,4 +34,16 @@ export class SpeechTimeService { Promise.all(promises); }) } + + public deleteSpeechTimesOfFaction(factionKey: string): void { + const speechTimesRef = this.database.list('speechTimes'); + const affectedTimes = speechTimesRef.query.orderByChild('factionKey').equalTo(factionKey); + affectedTimes.once('value', snapshot => { + const promises: Promise[] = []; + snapshot.forEach((child) => { + promises.push(child.ref.remove()); + }); + Promise.all(promises); + }) + } }