uploadDataStreamBatchesAsDataPoint method
Transform all measurements in all batches
to DataPoint
s 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);
}