import { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity'; import { BomItem } from './bom-item.model'; import { BomItemActions, BomItemActionTypes } from './bom-item.actions'; export interface State extends EntityState { // additional entities state properties } export const adapter: EntityAdapter = createEntityAdapter(); export const initialState: State = adapter.getInitialState({ // additional entity state properties }); export function reducer(state = initialState, action: BomItemActions): State { switch (action.type) { case BomItemActionTypes.AddBomItem: { return adapter.addOne(action.payload.bom, state); } case BomItemActionTypes.UpsertBomItem: { return adapter.upsertOne(action.payload.bom, state); } case BomItemActionTypes.AddBomItems: { return adapter.addMany(action.payload.boms, state); } case BomItemActionTypes.UpsertBomItems: { return adapter.upsertMany(action.payload.boms, state); } case BomItemActionTypes.UpdateBomItem: { return adapter.updateOne(action.payload.bom, state); } case BomItemActionTypes.UpdateBomItems: { return adapter.updateMany(action.payload.boms, state); } case BomItemActionTypes.DeleteBomItem: { return adapter.removeOne(action.payload.id, state); } case BomItemActionTypes.DeleteBomItems: { return adapter.removeMany(action.payload.ids, state); } case BomItemActionTypes.LoadBomItems: { return adapter.setAll(action.payload.boms, state); } case BomItemActionTypes.ClearBomItems: { return adapter.removeAll(state); } default: { return state; } } } export const { selectIds, selectEntities, selectAll, selectTotal } = adapter.getSelectors();