Skip to content

Commit 452b06f

Browse files
authored
CSHARP-4955: Add Render overload with RenderArgs (#1278)
* CSHARP-4955: Add Render overload with RenderArgs
1 parent 0d8134e commit 452b06f

File tree

118 files changed

+7308
-7083
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+7308
-7083
lines changed

src/Directory.Build.props

+5-1
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,12 @@
5252
</PackageReference>
5353
</ItemGroup>
5454

55+
<ItemGroup>
56+
<Compile Include="..\MongoDB.Shared\IsExternalInit.cs" Visible="false" />
57+
</ItemGroup>
58+
5559
<ItemGroup>
5660
<None Include="..\..\packageIcon.png" Pack="true" PackagePath="" />
5761
<None Include="..\..\README.md" Pack="true" PackagePath=""/>
5862
</ItemGroup>
59-
</Project>
63+
</Project>

src/MongoDB.Driver.GridFS/GridFSBucket.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -628,8 +628,9 @@ private FindOperation<GridFSFileInfo<TFileId>> CreateFindOperation(FilterDefinit
628628
var filesCollectionNamespace = this.GetFilesCollectionNamespace();
629629
var messageEncoderSettings = this.GetMessageEncoderSettings();
630630
var linqProvider = _database.Client.Settings.LinqProvider;
631-
var renderedFilter = filter.Render(_fileInfoSerializer, _options.SerializerRegistry, linqProvider);
632-
var renderedSort = options.Sort == null ? null : options.Sort.Render(_fileInfoSerializer, _options.SerializerRegistry, linqProvider);
631+
var args = new RenderArgs<GridFSFileInfo<TFileId>>(_fileInfoSerializer, _options.SerializerRegistry, linqProvider);
632+
var renderedFilter = filter.Render(args);
633+
var renderedSort = options.Sort == null ? null : options.Sort.Render(args);
633634

634635
return new FindOperation<GridFSFileInfo<TFileId>>(
635636
filesCollectionNamespace,

src/MongoDB.Driver.GridFS/GridFSBucketCompat.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* limitations under the License.
1414
*/
1515

16-
using System;
1716
using System.Collections.Generic;
1817
using System.IO;
1918
using System.Linq;
@@ -242,7 +241,7 @@ private IEnumerable<GridFSFileInfo> TransformFileInfos(IEnumerable<GridFSFileInf
242241
private FilterDefinition<GridFSFileInfo<ObjectId>> WrapFilter(FilterDefinition<GridFSFileInfo> filter)
243242
{
244243
var linqProvider = Database.Client.Settings.LinqProvider;
245-
var renderedFilter = filter.Render(GridFSFileInfoSerializer.Instance, BsonSerializer.SerializerRegistry, linqProvider);
244+
var renderedFilter = filter.Render(new(GridFSFileInfoSerializer.Instance, BsonSerializer.SerializerRegistry, linqProvider));
246245
return new BsonDocumentFilterDefinition<GridFSFileInfo<ObjectId>>(renderedFilter);
247246
}
248247

@@ -251,7 +250,7 @@ private GridFSFindOptions<ObjectId> WrapFindOptions(GridFSFindOptions options)
251250
if (options != null)
252251
{
253252
var linqProvider = Database.Client.Settings.LinqProvider;
254-
var renderedSort = options.Sort == null ? null : options.Sort.Render(GridFSFileInfoSerializer.Instance, BsonSerializer.SerializerRegistry, linqProvider);
253+
var renderedSort = options.Sort == null ? null : options.Sort.Render(new(GridFSFileInfoSerializer.Instance, BsonSerializer.SerializerRegistry, linqProvider));
255254
var wrappedSort = renderedSort == null ? null : new BsonDocumentSortDefinition<GridFSFileInfo<ObjectId>>(renderedSort);
256255
return new GridFSFindOptions<ObjectId>
257256
{

src/MongoDB.Driver/AggregateExpressionDefinition.cs

+18-7
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,18 @@ public static implicit operator AggregateExpressionDefinition<TSource, TResult>(
7575
/// <param name="serializerRegistry">The serializer registry.</param>
7676
/// <param name="linqProvider">The LINQ provider.</param>
7777
/// <returns>The rendered aggregation expression.</returns>
78-
public abstract BsonValue Render(IBsonSerializer<TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider);
78+
[Obsolete("Use Render(RenderArgs<TSource> args) overload instead.")]
79+
public virtual BsonValue Render(IBsonSerializer<TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
80+
{
81+
return Render(new(sourceSerializer, serializerRegistry, linqProvider));
82+
}
83+
84+
/// <summary>
85+
/// Renders the aggregation expression to a <see cref="BsonValue"/>.
86+
/// </summary>
87+
/// <param name="args">The render arguments.</param>
88+
/// <returns>A <see cref="BsonValue"/>.</returns>
89+
public abstract BsonValue Render(RenderArgs<TSource> args);
7990
}
8091

8192
/// <summary>
@@ -101,7 +112,7 @@ public BsonValueAggregateExpressionDefinition(BsonValue expression)
101112

102113
// public methods
103114
/// <inheritdoc/>
104-
public override BsonValue Render(IBsonSerializer<TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
115+
public override BsonValue Render(RenderArgs<TSource> args)
105116
{
106117
return _expression;
107118
}
@@ -143,10 +154,10 @@ internal ExpressionAggregateExpressionDefinition(
143154

144155
// public methods
145156
/// <inheritdoc/>
146-
public override BsonValue Render(IBsonSerializer<TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
157+
public override BsonValue Render(RenderArgs<TSource> args)
147158
{
148-
var contextData = _contextData?.With("SerializerRegistry", serializerRegistry);
149-
return linqProvider.GetAdapter().TranslateExpressionToAggregateExpression(_expression, sourceSerializer, serializerRegistry, _translationOptions, contextData);
159+
var contextData = _contextData?.With("SerializerRegistry", args.SerializerRegistry);
160+
return args.LinqProvider.GetAdapter().TranslateExpressionToAggregateExpression(_expression, args.DocumentSerializer, args.SerializerRegistry, _translationOptions, contextData);
150161
}
151162
}
152163

@@ -177,9 +188,9 @@ public DocumentsAggregateExpressionDefinition(
177188

178189
// public methods
179190
/// <inheritdoc/>
180-
public override BsonValue Render(IBsonSerializer<NoPipelineInput> sourceSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
191+
public override BsonValue Render(RenderArgs<NoPipelineInput> args)
181192
{
182-
var documentSerializer = _documentSerializer ?? serializerRegistry.GetSerializer<TDocument>();
193+
var documentSerializer = _documentSerializer ?? args.SerializerRegistry.GetSerializer<TDocument>();
183194
return SerializationHelper.SerializeValues(documentSerializer, _documents);
184195
}
185196
}

src/MongoDB.Driver/AggregateFacet.cs

+15-4
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,25 @@ protected AggregateFacet(string name)
7979
/// <param name="serializerRegistry">The serializer registry.</param>
8080
/// <param name="linqProvider">The LINQ provider.</param>
8181
/// <returns>The rendered pipeline.</returns>
82-
public abstract BsonArray RenderPipeline(IBsonSerializer<TInput> inputSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider);
82+
[Obsolete("Use Render(RenderArgs<TInput> args) overload instead.")]
83+
public virtual BsonArray RenderPipeline(IBsonSerializer<TInput> inputSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
84+
{
85+
return RenderPipeline(new(inputSerializer, serializerRegistry, linqProvider));
86+
}
87+
88+
/// <summary>
89+
/// Renders the facet pipeline.
90+
/// </summary>
91+
/// <param name="args">The render arguments.</param>
92+
/// <returns>A <see cref="BsonValue"/>.</returns>
93+
public abstract BsonArray RenderPipeline(RenderArgs<TInput> args);
8394
}
8495

8596
/// <summary>
8697
/// Represents a facet to be passed to the Facet method.
8798
/// </summary>
8899
/// <typeparam name="TInput">The type of the input documents.</typeparam>
89-
/// <typeparam name="TOutput">The type of the otuput documents.</typeparam>
100+
/// <typeparam name="TOutput">The type of the output documents.</typeparam>
90101
public class AggregateFacet<TInput, TOutput> : AggregateFacet<TInput>
91102
{
92103
/// <summary>
@@ -112,9 +123,9 @@ public AggregateFacet(string name, PipelineDefinition<TInput, TOutput> pipeline)
112123
public PipelineDefinition<TInput, TOutput> Pipeline { get; private set; }
113124

114125
/// <inheritdoc/>
115-
public override BsonArray RenderPipeline(IBsonSerializer<TInput> inputSerializer, IBsonSerializerRegistry serializerRegistry, LinqProvider linqProvider)
126+
public override BsonArray RenderPipeline(RenderArgs<TInput> args)
116127
{
117-
var renderedPipeline = Pipeline.Render(inputSerializer, serializerRegistry, linqProvider);
128+
var renderedPipeline = Pipeline.Render(args);
118129
return new BsonArray(renderedPipeline.Documents);
119130
}
120131
}

0 commit comments

Comments
 (0)