uploadDataStreamBatchesAsDataPoint method

Future<void> uploadDataStreamBatchesAsDataPoint(
  1. List<DataStreamBatch> batches
)

Transform all measurements in all batches to DataPoints and upload them to CAWS using the DataPoint batch upload endpoint.

Implementation

Future<void> uploadDataStreamBatchesAsDataPoint(
  List<DataStreamBatch> batches,
) async {
  final List<DataPoint> dataPoints = [];
  for (var batch in batches) {
    for (var measurement in batch.measurements) {
      var dataPoint = DataPoint(
        DataPointHeader(
          studyId: deployment.studyDeploymentId,
          userId: deployment.userId,
          dataFormat: measurement.dataType,
          deviceRoleName: measurement.taskControl?.targetDevice?.roleName ??
              deployment.deviceConfiguration.roleName,
          triggerId: measurement.taskControl?.triggerId.toString() ?? '0',
          startTime:
              DateTime.fromMicrosecondsSinceEpoch(measurement.sensorStartTime)
                  .toUtc(),
          endTime: measurement.sensorEndTime == null
              ? null
              : DateTime.fromMicrosecondsSinceEpoch(
                      measurement.sensorEndTime!)
                  .toUtc(),
        ),
        measurement.data,
      );
      dataPoints.add(dataPoint);
    }
  }

  info(
      '$runtimeType - Batch uploading data points to CAWS, N=${dataPoints.length}');
  dataPointReference.batch(dataPoints);
}