26 lines
917 B
TypeScript
26 lines
917 B
TypeScript
|
|
import { IDepartment, EntityType, IEventBus } from '../../types/CalendarTypes';
|
||
|
|
import { DepartmentStore } from './DepartmentStore';
|
||
|
|
import { BaseEntityService } from '../../storage/BaseEntityService';
|
||
|
|
import { IndexedDBContext } from '../../storage/IndexedDBContext';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* DepartmentService - CRUD operations for departments in IndexedDB
|
||
|
|
*/
|
||
|
|
export class DepartmentService extends BaseEntityService<IDepartment> {
|
||
|
|
readonly storeName = DepartmentStore.STORE_NAME;
|
||
|
|
readonly entityType: EntityType = 'Department';
|
||
|
|
|
||
|
|
constructor(context: IndexedDBContext, eventBus: IEventBus) {
|
||
|
|
super(context, eventBus);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get departments by IDs
|
||
|
|
*/
|
||
|
|
async getByIds(ids: string[]): Promise<IDepartment[]> {
|
||
|
|
if (ids.length === 0) return [];
|
||
|
|
const results = await Promise.all(ids.map(id => this.get(id)));
|
||
|
|
return results.filter((d): d is IDepartment => d !== null);
|
||
|
|
}
|
||
|
|
}
|