Exemple #1
0
        /// <inheritdoc />
        public async Task DeleteMeasurementsByPartUuids(Guid[] partUuids, GenericSearchConditionDto filter = null, AggregationMeasurementSelectionDto aggregation = AggregationMeasurementSelectionDto.Default, CancellationToken cancellationToken = default)
        {
            if (partUuids == null)
            {
                var parameter = new List <ParameterDefinition>();

                if (filter != null)
                {
                    parameter.Add(ParameterDefinition.Create("searchCondition", SearchConditionParser.GenericConditionToString(filter)));
                }

                if (aggregation != AggregationMeasurementSelectionDto.Default)
                {
                    parameter.Add(ParameterDefinition.Create("aggregation", aggregation.ToString()));
                }

                await _RestClient.Request(RequestBuilder.CreateDelete("measurements", parameter.ToArray()), cancellationToken).ConfigureAwait(false);
            }
            else
            {
                foreach (var partUuid in partUuids)
                {
                    var parameter = new List <ParameterDefinition> {
                        ParameterDefinition.Create("partUuids", RestClientHelper.ConvertGuidListToString(new[] { partUuid }))
                    };

                    if (filter != null)
                    {
                        parameter.Add(ParameterDefinition.Create("searchCondition", SearchConditionParser.GenericConditionToString(filter)));
                    }

                    if (aggregation != AggregationMeasurementSelectionDto.Default)
                    {
                        parameter.Add(ParameterDefinition.Create("aggregation", aggregation.ToString()));
                    }

                    await _RestClient.Request(RequestBuilder.CreateDelete("measurements", parameter.ToArray()), cancellationToken).ConfigureAwait(false);
                }
            }
        }
Exemple #2
0
        /// <inheritdoc />
        public async Task DeleteMeasurementsByPartPath(PathInformationDto partPath = null, GenericSearchConditionDto filter = null, AggregationMeasurementSelectionDto aggregation = AggregationMeasurementSelectionDto.Default, MeasurementDeleteBehaviorDto deep = MeasurementDeleteBehaviorDto.DeleteForCurrentPartOnly, CancellationToken cancellationToken = default)
        {
            var parameter = new List <ParameterDefinition>();

            if (partPath != null)
            {
                parameter.Add(ParameterDefinition.Create("partPath", PathHelper.PathInformation2DatabaseString(partPath)));
            }

            if (filter != null)
            {
                parameter.Add(ParameterDefinition.Create("searchCondition", SearchConditionParser.GenericConditionToString(filter)));
            }

            if (aggregation != AggregationMeasurementSelectionDto.Default)
            {
                parameter.Add(ParameterDefinition.Create("aggregation", aggregation.ToString()));
            }

            if (deep == MeasurementDeleteBehaviorDto.DeleteDeep)
            {
                var featureMatrix = await GetFeatureMatrixInternal(FetchBehavior.FetchIfNotCached, cancellationToken).ConfigureAwait(false);

                if (!featureMatrix.SupportsDeleteMeasurementsForSubParts)
                {
                    throw new OperationNotSupportedOnServerException(
                              "Deleting measurements for sub parts is not supported by this server.",
                              DataServiceFeatureMatrix.DeleteMeasurementsForSubPartsMinVersion,
                              featureMatrix.CurrentInterfaceVersion);
                }

                parameter.Add(ParameterDefinition.Create("deep", deep.ToString()));
            }

            await _RestClient.Request(RequestBuilder.CreateDelete("measurements", parameter.ToArray()), cancellationToken).ConfigureAwait(false);
        }