feat: add umpire CRUD service

This commit is contained in:
2026-05-24 17:47:21 +02:00
parent 08d64bbaaf
commit 0f46cb3c93
2 changed files with 77 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { UmpireService } from './umpire.service';
describe('Umpire', () => {
let service: UmpireService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(UmpireService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+61
View File
@@ -0,0 +1,61 @@
import { Injectable } from '@angular/core';
import { db } from 'db';
import { liveQuery } from 'dexie';
import { from } from 'rxjs';
import { Umpire } from '../../../db';
import { toSignal } from '@angular/core/rxjs-interop';
@Injectable({
providedIn: 'root'
})
export class UmpireService {
/**
* Reactive signal with all umpires
*/
readonly umpires = toSignal(
from(liveQuery(() => db.umpires.orderBy('lastName').toArray())),
{
initialValue: []
}
);
/**
* Create
*/
async create(umpire: Omit<Umpire, 'id'>): Promise<number> {
return await db.umpires.add({
...umpire
} as Umpire);
}
/**
* Read one
*/
async getById(id: number): Promise<Umpire | undefined> {
return await db.umpires.get(id);
}
/**
* Update
*/
async update(
id: number,
changes: Partial<Omit<Umpire, 'id'>>
): Promise<number> {
return await db.umpires.update(id, changes);
}
/**
* Delete
*/
async delete(id: number): Promise<void> {
await db.umpires.delete(id);
}
/**
* Delete all
*/
async clear(): Promise<void> {
await db.umpires.clear();
}
}