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 { 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 { 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); } }