diff --git a/Artesian/Artesian.SDK.Tests/VersionedTimeSerieQueries.cs b/Artesian/Artesian.SDK.Tests/VersionedTimeSerieQueries.cs index 47c2c3d..226b679 100644 --- a/Artesian/Artesian.SDK.Tests/VersionedTimeSerieQueries.cs +++ b/Artesian/Artesian.SDK.Tests/VersionedTimeSerieQueries.cs @@ -2651,6 +2651,15 @@ public void Ver_RelativePeriodExtractionWindowChange() .WithVerb(HttpMethod.Get) .Times(1); + var test4 = partialQuery + .ForAnalysisDate(new LocalDate(2018, 07, 19)) + .ExecuteAsync().Result; + + httpTest.ShouldHaveCalledPath($"{_cfg.BaseAddress}query/v1.0/vts/MUV/Day/P5D") + .WithQueryParam("ad", "2018-07-19") + .WithVerb(HttpMethod.Get) + .Times(1); + } } #endregion diff --git a/Artesian/Artesian.SDK/Service/Query/Partitioning/PartitionByIDStrategy.cs b/Artesian/Artesian.SDK/Service/Query/Partitioning/PartitionByIDStrategy.cs index fe3454d..3af19e3 100644 --- a/Artesian/Artesian.SDK/Service/Query/Partitioning/PartitionByIDStrategy.cs +++ b/Artesian/Artesian.SDK/Service/Query/Partitioning/PartitionByIDStrategy.cs @@ -62,7 +62,8 @@ public IEnumerable Partition(IEnumerable /// /// + /// public VersionedQueryParamaters( IEnumerable ids, ExtractionRangeSelectionConfig extractionRangeSelectionConfig, @@ -47,7 +48,8 @@ public VersionedQueryParamaters( VersionSelectionType? versionSelectionType, LocalDateTime? versionLimit, FillerKindType fillerK, - FillerConfig fillerConfig + FillerConfig fillerConfig, + LocalDate? analysisDate ) : base(ids, extractionRangeSelectionConfig, extractionRangeType, timezone, filterId, fillerK, fillerConfig) { @@ -56,6 +58,7 @@ FillerConfig fillerConfig this.Granularity = granularity; this.TransformId = transformId; this.VersionLimit = versionLimit; + this.AnalysisDate = analysisDate; this.FillerConfig = fillerConfig; } @@ -79,5 +82,9 @@ FillerConfig fillerConfig /// Version Limit /// public LocalDateTime? VersionLimit { get; set; } + /// + /// The analysis date from which apply the relative interval (default Today) + /// + public LocalDate? AnalysisDate { get; set; } } } diff --git a/Artesian/Artesian.SDK/Service/Query/VersionedQuery.cs b/Artesian/Artesian.SDK/Service/Query/VersionedQuery.cs index 00884f3..bdbd11f 100644 --- a/Artesian/Artesian.SDK/Service/Query/VersionedQuery.cs +++ b/Artesian/Artesian.SDK/Service/Query/VersionedQuery.cs @@ -327,6 +327,16 @@ public VersionedQuery ForVersion(LocalDateTime version) return this; } /// + /// Set a specific analysis date from wich apply the relative interval/period + /// + /// VersionedQuery + public VersionedQuery ForAnalysisDate(LocalDate analysisDate) + { + _queryParamaters.AnalysisDate = analysisDate; + + return this; + } + /// /// Set the Filler strategy to Null /// /// VersionedQuery @@ -415,6 +425,11 @@ protected override void _validateQuery() } } + if ( + ( _queryParamaters.ExtractionRangeSelectionConfig.DateStart != null || _queryParamaters.ExtractionRangeSelectionConfig.DateEnd != null ) + && _queryParamaters.AnalysisDate != null + ) + throw new ArtesianSdkClientException("Analysis should be related to a Period. Provide a period or remove analysis date."); } private string _buildVersionRoute(VersionedQueryParamaters queryParamaters) @@ -492,6 +507,7 @@ private List _buildRequest() .SetQueryParam("fillerK", qp.FillerKindType) .SetQueryParam("fillerDV", qp.FillerConfig.FillerTimeSeriesDV) .SetQueryParam("fillerP", qp.FillerConfig.FillerPeriod) + .SetQueryParam("ad", qp.AnalysisDate) .ToString()) .ToList();