import { PROC_MAP } from 'src/api/monitoring/cp/assembly/constants/proc-map.const';
import type {
  AssemblyMonitoringOverviewProcessResponseDto,
  AssemblyMonitoringOverviewResponseDto,
} from 'src/api/monitoring/cp/assembly/dto/response/overview.response.dto';

export const createOverviewProcesses = (
  overrides: Partial<AssemblyMonitoringOverviewProcessResponseDto> = {},
): AssemblyMonitoringOverviewProcessResponseDto => {
  const base = PROC_MAP.reduce((acc, entry) => {
    acc[entry.processName] = [];
    return acc;
  }, {} as AssemblyMonitoringOverviewProcessResponseDto);

  return { ...base, ...overrides };
};

type OverviewResponseOverrides = Omit<
  Partial<AssemblyMonitoringOverviewResponseDto>,
  'processes'
> & {
  processes?: Partial<AssemblyMonitoringOverviewProcessResponseDto>;
};

export const createOverviewResponse = (
  overrides: OverviewResponseOverrides = {},
): AssemblyMonitoringOverviewResponseDto => {
  const { processes, ...rest } = overrides;

  return {
    processes: createOverviewProcesses(processes),
    inactiveWorkers: [],
    ...rest,
  };
};
