refactor: notification

This commit is contained in:
thomas
2024-05-13 16:24:11 +02:00
parent fbb9e3eccf
commit 678dd77030
37 changed files with 41 additions and 41 deletions

View File

@@ -0,0 +1,105 @@
import {
randSchool,
randStudent,
randTeacher,
} from '@angular-challenges/power-of-effect/model';
import { Injectable, inject } from '@angular/core';
import { randCompanyName, randFirstName } from '@ngneat/falso';
import { concatLatestFrom } from '@ngrx/effects';
import { map, tap, timer } from 'rxjs';
import { FakeDBService } from './fake-db.service';
import { PushService } from './push.service';
@Injectable({ providedIn: 'root' })
export class FakeBackendService {
private fakeDbService = inject(FakeDBService);
private pushService = inject(PushService);
getAllTeachers = () => this.fakeDbService.teachers$;
getAllStudents = () => this.fakeDbService.students$;
getAllSchools = () => this.fakeDbService.schools$;
start() {
this.fakeAddTeacher();
this.fakeUpdateTeacher();
this.fakeAddStudent();
this.fakeUpdateStudent();
this.fakeAddSchool();
this.fakeUpdateSchool();
}
private fakeAddTeacher() {
timer(0, 4000)
.pipe(
map(() => randTeacher()),
tap((teacher) => this.pushService.pushData(teacher)),
tap((teacher) => this.fakeDbService.addTeacher(teacher)),
)
.subscribe();
}
private fakeUpdateTeacher() {
timer(8000, 5000)
.pipe(
concatLatestFrom(() => this.fakeDbService.randomTeacher$),
map(([, teacher]) => ({
...teacher,
firstname: randFirstName(),
version: teacher.version + 1,
})),
tap((teacher) => this.pushService.pushData(teacher)),
tap((teacher) => this.fakeDbService.updateTeacher(teacher)),
)
.subscribe();
}
private fakeAddStudent() {
timer(0, 2000)
.pipe(
map(() => randStudent()),
tap((student) => this.pushService.pushData(student)),
tap((student) => this.fakeDbService.addStudent(student)),
)
.subscribe();
}
private fakeUpdateStudent() {
timer(8000, 6000)
.pipe(
concatLatestFrom(() => this.fakeDbService.randomStudents$),
map(([, student]) => ({
...student,
firstname: randFirstName(),
version: student.version + 1,
})),
tap((student) => this.pushService.pushData(student)),
tap((student) => this.fakeDbService.updateSudent(student)),
)
.subscribe();
}
private fakeAddSchool() {
timer(0, 2000)
.pipe(
map(() => randSchool()),
tap((school) => this.pushService.pushData(school)),
tap((school) => this.fakeDbService.addSchool(school)),
)
.subscribe();
}
private fakeUpdateSchool() {
timer(8000, 4000)
.pipe(
concatLatestFrom(() => this.fakeDbService.randomSchool$),
map(([, school]) => ({
...school,
name: randCompanyName(),
version: school.version + 1,
})),
tap((school) => this.pushService.pushData(school)),
tap((school) => this.fakeDbService.updateSchool(school)),
)
.subscribe();
}
}