mirror of
https://github.com/Raghu-Ch/angular-challenges.git
synced 2026-02-10 04:43:03 -05:00
fix: better typing fake-db-service
This commit is contained in:
@@ -7,12 +7,14 @@ import { Injectable } from '@angular/core';
|
||||
import { randNumber } from '@ngneat/falso';
|
||||
import { ComponentStore } from '@ngrx/component-store';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class FakeDBService extends ComponentStore<{
|
||||
interface AppState {
|
||||
teachers: Teacher[];
|
||||
students: Student[];
|
||||
schools: School[];
|
||||
}> {
|
||||
}
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class FakeDBService extends ComponentStore<AppState> {
|
||||
readonly teachers$ = this.select((state) => state.teachers);
|
||||
readonly randomTeacher$ = this.select(
|
||||
this.teachers$,
|
||||
@@ -35,33 +37,45 @@ export class FakeDBService extends ComponentStore<{
|
||||
super({ teachers: [], students: [], schools: [] });
|
||||
}
|
||||
|
||||
addTeacher = this.updater((state, teacher: Teacher) => ({
|
||||
...state,
|
||||
teachers: [...state.teachers, teacher],
|
||||
}));
|
||||
addTeacher = this.updater(
|
||||
(state, teacher: Teacher): AppState => ({
|
||||
...state,
|
||||
teachers: [...state.teachers, teacher],
|
||||
}),
|
||||
);
|
||||
|
||||
updateTeacher = this.updater((state, teacher: Teacher) => ({
|
||||
...state,
|
||||
teachers: state.teachers.map((t) => (t.id === teacher.id ? teacher : t)),
|
||||
}));
|
||||
updateTeacher = this.updater(
|
||||
(state, teacher: Teacher): AppState => ({
|
||||
...state,
|
||||
teachers: state.teachers.map((t) => (t.id === teacher.id ? teacher : t)),
|
||||
}),
|
||||
);
|
||||
|
||||
addStudent = this.updater((state, student: Student) => ({
|
||||
...state,
|
||||
students: [...state.students, student],
|
||||
}));
|
||||
addStudent = this.updater(
|
||||
(state, student: Student): AppState => ({
|
||||
...state,
|
||||
students: [...state.students, student],
|
||||
}),
|
||||
);
|
||||
|
||||
updateSudent = this.updater((state, student: Student) => ({
|
||||
...state,
|
||||
students: state.students.map((t) => (t.id === student.id ? student : t)),
|
||||
}));
|
||||
updateSudent = this.updater(
|
||||
(state, student: Student): AppState => ({
|
||||
...state,
|
||||
students: state.students.map((t) => (t.id === student.id ? student : t)),
|
||||
}),
|
||||
);
|
||||
|
||||
addSchool = this.updater((state, school: School) => ({
|
||||
...state,
|
||||
schools: [...state.schools, school],
|
||||
}));
|
||||
addSchool = this.updater(
|
||||
(state, school: School): AppState => ({
|
||||
...state,
|
||||
schools: [...state.schools, school],
|
||||
}),
|
||||
);
|
||||
|
||||
updateSchool = this.updater((state, school: School) => ({
|
||||
...state,
|
||||
schools: state.schools.map((t) => (t.id === school.id ? school : t)),
|
||||
}));
|
||||
updateSchool = this.updater(
|
||||
(state, school: School): AppState => ({
|
||||
...state,
|
||||
schools: state.schools.map((t) => (t.id === school.id ? school : t)),
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user