Skip to content

Commit 3ee0a50

Browse files
committed
Amend the abstract BatchGet class to implement the non-generic IBatchGet interface
1 parent 77e5e6b commit 3ee0a50

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

sdk/src/Services/DynamoDBv2/Custom/DataModel/BatchGet.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,22 @@ public interface IBatchGet<T> : IBatchGet
101101
/// Represents a non-generic object for retrieving a batch of items
102102
/// from a single DynamoDB table
103103
/// </summary>
104-
public abstract class BatchGet
104+
public abstract partial class BatchGet : IBatchGet
105105
{
106106
internal DocumentBatchGet DocumentBatch { get; set; }
107107

108108
internal abstract void CreateDocumentBatch();
109109

110110
internal abstract void PopulateResults(List<Document> items);
111+
112+
/// <inheritdoc/>
113+
public abstract int TotalKeys { get; }
114+
115+
/// <inheritdoc/>
116+
public List<object> UntypedResults { get; } = new();
117+
118+
/// <inheritdoc/>
119+
public bool ConsistentRead { get; set; }
111120
}
112121

113122
/// <summary>
@@ -119,19 +128,13 @@ public partial class BatchGet<T> : BatchGet, IBatchGet<T>
119128
private readonly DynamoDBContext _context;
120129
private readonly DynamoDBFlatConfig _config;
121130
private readonly ItemStorageConfig _itemStorageConfig;
122-
private readonly List<Key> _keys;
123-
124-
/// <inheritdoc/>
125-
public int TotalKeys => _keys.Count;
131+
private readonly List<Key> _keys = new();
126132

127133
/// <inheritdoc/>
128-
public List<object> UntypedResults { get; private set; } = new List<object>();
134+
public override int TotalKeys => _keys.Count;
129135

130136
/// <inheritdoc/>
131-
public List<T> Results { get; private set; } = new List<T>();
132-
133-
/// <inheritdoc/>
134-
public bool ConsistentRead { get; set; }
137+
public List<T> Results { get; } = new();
135138

136139
/// <inheritdoc/>
137140
public void AddKey(object hashKey)
@@ -164,7 +167,6 @@ internal BatchGet(DynamoDBContext context, DynamoDBFlatConfig config)
164167
_context = context;
165168
_config = config;
166169
_itemStorageConfig = context.StorageConfigCache.GetConfig<T>(config);
167-
_keys = new List<Key>();
168170
}
169171

170172
private void ExecuteHelper()
@@ -199,8 +201,8 @@ internal override void CreateDocumentBatch()
199201

200202
internal override void PopulateResults(List<Document> items)
201203
{
202-
UntypedResults = new List<object>();
203-
Results = new List<T>();
204+
UntypedResults.Clear();
205+
Results.Clear();
204206
foreach (var doc in items)
205207
{
206208
var item = _context.FromDocumentHelper<T>(doc, _config);

sdk/src/Services/DynamoDBv2/Custom/DataModel/IDynamoDBContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,15 @@ public partial interface IDynamoDBContext : IDisposable
119119
/// </summary>
120120
/// <typeparam name="T">Type of objects to get</typeparam>
121121
/// <param name="operationConfig">Config object which can be used to override that table used.</param>
122-
/// <returns>An interface with the ability to perform BatchGet operations</returns>
122+
/// <returns>A BatchGet object using this context's configuration, which can be used to prepare and execute a BatchGet request</returns>
123123
IBatchGet<T> CreateBatchGet<T>(DynamoDBOperationConfig operationConfig = null);
124124

125125
/// <summary>
126126
/// Creates a MultiTableBatchGet object, composed of multiple
127127
/// individual BatchGet objects.
128128
/// </summary>
129129
/// <param name="batches">Individual BatchGet objects</param>
130-
/// <returns>An interface with the ability to perform MultiTableBatchGet operations</returns>
130+
/// <returns>A MultiTableBatchGet object using this context's configuration, which can be used to prepare and execute a MultiTableBatchGet request</returns>
131131
IMultiTableBatchGet CreateMultiTableBatchGet(params IBatchGet[] batches);
132132

133133
#endregion

sdk/src/Services/DynamoDBv2/Custom/DataModel/_async/BatchGet.Async.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,16 @@ public partial interface IBatchGet
3030
Task ExecuteAsync(CancellationToken cancellationToken = default(CancellationToken));
3131
}
3232

33-
public partial class BatchGet<T> : IBatchGet<T>
33+
public abstract partial class BatchGet
3434
{
3535
/// <inheritdoc/>
36-
public Task ExecuteAsync(CancellationToken cancellationToken = default(CancellationToken))
36+
public abstract Task ExecuteAsync(CancellationToken cancellationToken = default(CancellationToken));
37+
}
38+
39+
public partial class BatchGet<T> : BatchGet, IBatchGet<T>
40+
{
41+
/// <inheritdoc/>
42+
public override Task ExecuteAsync(CancellationToken cancellationToken = default(CancellationToken))
3743
{
3844
return ExecuteHelperAsync(cancellationToken);
3945
}

sdk/src/Services/DynamoDBv2/Custom/DataModel/_bcl/BatchGet.Sync.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,16 @@ public partial interface IBatchGet
2323
void Execute();
2424
}
2525

26-
public partial class BatchGet<T> : IBatchGet<T>
26+
public abstract partial class BatchGet
2727
{
2828
/// <inheritdoc/>
29-
public void Execute()
29+
public abstract void Execute();
30+
}
31+
32+
public partial class BatchGet<T> : BatchGet, IBatchGet<T>
33+
{
34+
/// <inheritdoc/>
35+
public override void Execute()
3036
{
3137
ExecuteHelper();
3238
}

0 commit comments

Comments
 (0)