import { IDepartment, EntityType, IEventBus } from '../../types/CalendarTypes';
import { DepartmentStore } from './DepartmentStore';
import { BaseEntityService } from '../BaseEntityService';
import { IndexedDBContext } from '../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);
  }
}
