async function validatePlate()

in main/src/image-management/image-management.ts [581:641]


async function validatePlate(plateId: any) {
  const plateImageStatus = await getPlateImageStatus(plateId);

  let plateStatus = SR_UNDEFINED;
  if (plateImageStatus[SR_ERROR] > 0) {
    plateStatus = SR_ERROR;
  } else if (plateImageStatus[SR_UNDEFINED] > 0) {
    plateStatus = SR_UNDEFINED;
  } else if (plateImageStatus[SR_PREVALIDATION] > 0) {
    plateStatus = SR_PREVALIDATION;
  } else if (plateImageStatus[SR_VALIDATED] > 0) {
    plateStatus = SR_VALIDATED;
  } else if (plateImageStatus[SR_READY] > 0) {
    // NOTE: a plate may participate in multiple embeddings, therefore it can only reach
    // 'VALIDATED' and never 'READY'
    plateStatus = SR_VALIDATED;
  }

  let height = 0;
  let width = 0;
  let depth = 0;
  let channels = 0;

  if (plateStatus == SR_VALIDATED || plateStatus == SR_READY) {
    const images = await getImagesByPlateId(plateId);
    let count = 0;
    for (let item of images) {
      const image = item["Item"];
      if (count == 0) {
        height = image[HEIGHT_ATTRIBUTE];
        width = image[WIDTH_ATTRIBUTE];
        depth = image[DEPTH_ATTRIBUTE];
        channels = image[CHANNELS_ATTRIBUTE];
      } else {
        if (
          !(
            height == image[HEIGHT_ATTRIBUTE] &&
            width == image[WIDTH_ATTRIBUTE] &&
            depth == image[DEPTH_ATTRIBUTE] &&
            channels == image[CHANNELS_ATTRIBUTE]
          )
        ) {
          break;
        }
      }
      count += 1;
    }
    if (
      count == images.length &&
      height > 0 &&
      width > 0 &&
      depth > 0 &&
      channels > 0
    ) {
      plateStatus = SR_VALIDATED;
    }
  }

  await updatePlateStatus(plateId, plateStatus, width, height, depth, channels);
  return plateStatus;
}