/**
 * 可以考虑 JS API 暴露
 */
import _ from 'lodash';

export const getDpIdMapByDevInfo = (
  devInfo: DevInfo
): Record<string, DevInfo['schema'][number]> => {
  const dpIdMap = _.mapKeys(devInfo.schema, schemaInfo => schemaInfo.id);
  return dpIdMap;
};

export const getDpCodeMapByDevInfo = (
  devInfo: DevInfo
): Record<string, DevInfo['schema'][number]> => {
  const dpCodeMap = _.mapKeys(devInfo.schema, schemaInfo => schemaInfo.code);
  return dpCodeMap;
};

export const mapDpsMapToDpStateMap = (dpsMap: Record<string, any>, devInfo: DevInfo) => {
  const dpIdMap = getDpIdMapByDevInfo(devInfo);
  const dpStateMap = _.mapKeys(dpsMap, (__, dpId) => dpIdMap[dpId].code);
  return dpStateMap;
};

/**
 *
 * @param devInfo
 * @returns dpState 对象
 * ```
 * {
 *   switch: true,
 *   ...
 * }
 * ```
 */
export const getDpStateMapByDevInfo = (devInfo: DevInfo): Record<string, any> => {
  const { dps, schema } = devInfo;
  const dpStateMap = {};
  _.forEach(schema, schemaInfo => {
    dpStateMap[schemaInfo.code] = dps[schemaInfo.id];
  });
  return dpStateMap;
};