Skip to content

Commit b766cc3

Browse files
committed
feat: make bulk result readonly
1 parent bac621a commit b766cc3

File tree

3 files changed

+71
-15
lines changed

3 files changed

+71
-15
lines changed

src/operations/client_bulk_write/common.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -179,39 +179,39 @@ export interface ClientBulkWriteResult {
179179
/**
180180
* Whether the bulk write was acknowledged.
181181
*/
182-
acknowledged: boolean;
182+
readonly acknowledged: boolean;
183183
/**
184184
* The total number of documents inserted across all insert operations.
185185
*/
186-
insertedCount: number;
186+
readonly insertedCount: number;
187187
/**
188188
* The total number of documents upserted across all update operations.
189189
*/
190-
upsertedCount: number;
190+
readonly upsertedCount: number;
191191
/**
192192
* The total number of documents matched across all update operations.
193193
*/
194-
matchedCount: number;
194+
readonly matchedCount: number;
195195
/**
196196
* The total number of documents modified across all update operations.
197197
*/
198-
modifiedCount: number;
198+
readonly modifiedCount: number;
199199
/**
200200
* The total number of documents deleted across all delete operations.
201201
*/
202-
deletedCount: number;
202+
readonly deletedCount: number;
203203
/**
204204
* The results of each individual insert operation that was successfully performed.
205205
*/
206-
insertResults?: Map<number, ClientInsertOneResult>;
206+
readonly insertResults?: ReadonlyMap<number, ClientInsertOneResult>;
207207
/**
208208
* The results of each individual update operation that was successfully performed.
209209
*/
210-
updateResults?: Map<number, ClientUpdateResult>;
210+
readonly updateResults?: ReadonlyMap<number, ClientUpdateResult>;
211211
/**
212212
* The results of each individual delete operation that was successfully performed.
213213
*/
214-
deleteResults?: Map<number, ClientDeleteResult>;
214+
readonly deleteResults?: ReadonlyMap<number, ClientDeleteResult>;
215215
}
216216

217217
/** @public */

src/operations/client_bulk_write/executor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ export class ClientBulkWriteExecutor {
112112
message: 'Mongo client bulk write encountered an error during execution'
113113
});
114114
bulkWriteError.cause = error;
115-
bulkWriteError.partialResult = resultsMerger.result;
115+
bulkWriteError.partialResult = resultsMerger.bulkWriteResult;
116116
throw bulkWriteError;
117117
} else {
118118
// Client side errors are just thrown.
@@ -128,11 +128,11 @@ export class ClientBulkWriteExecutor {
128128
});
129129
error.writeConcernErrors = resultsMerger.writeConcernErrors;
130130
error.writeErrors = resultsMerger.writeErrors;
131-
error.partialResult = resultsMerger.result;
131+
error.partialResult = resultsMerger.bulkWriteResult;
132132
throw error;
133133
}
134134

135-
return resultsMerger.result;
135+
return resultsMerger.bulkWriteResult;
136136
}
137137
}
138138
}

src/operations/client_bulk_write/results_merger.ts

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,53 @@ const UNACKNOWLEDGED = {
2626
deleteResults: undefined
2727
};
2828

29+
interface InternalResult {
30+
/**
31+
* Whether the bulk write was acknowledged.
32+
*/
33+
acknowledged: boolean;
34+
/**
35+
* The total number of documents inserted across all insert operations.
36+
*/
37+
insertedCount: number;
38+
/**
39+
* The total number of documents upserted across all update operations.
40+
*/
41+
upsertedCount: number;
42+
/**
43+
* The total number of documents matched across all update operations.
44+
*/
45+
matchedCount: number;
46+
/**
47+
* The total number of documents modified across all update operations.
48+
*/
49+
modifiedCount: number;
50+
/**
51+
* The total number of documents deleted across all delete operations.
52+
*/
53+
deletedCount: number;
54+
/**
55+
* The results of each individual insert operation that was successfully performed.
56+
*/
57+
insertResults?: Map<number, ClientInsertOneResult>;
58+
/**
59+
* The results of each individual update operation that was successfully performed.
60+
*/
61+
updateResults?: Map<number, ClientUpdateResult>;
62+
/**
63+
* The results of each individual delete operation that was successfully performed.
64+
*/
65+
deleteResults?: Map<number, ClientDeleteResult>;
66+
}
67+
2968
/**
3069
* Merges client bulk write cursor responses together into a single result.
3170
* @internal
3271
*/
3372
export class ClientBulkWriteResultsMerger {
34-
result: ClientBulkWriteResult;
35-
options: ClientBulkWriteOptions;
36-
currentBatchOffset: number;
73+
private result: InternalResult;
74+
private options: ClientBulkWriteOptions;
75+
private currentBatchOffset: number;
3776
writeConcernErrors: Document[];
3877
writeErrors: Map<number, ClientBulkWriteError>;
3978

@@ -72,6 +111,23 @@ export class ClientBulkWriteResultsMerger {
72111
}
73112
}
74113

114+
/**
115+
* Get the bulk write result object.
116+
*/
117+
get bulkWriteResult(): ClientBulkWriteResult {
118+
return {
119+
acknowledged: this.result.acknowledged,
120+
insertedCount: this.result.insertedCount,
121+
upsertedCount: this.result.upsertedCount,
122+
matchedCount: this.result.matchedCount,
123+
modifiedCount: this.result.modifiedCount,
124+
deletedCount: this.result.deletedCount,
125+
insertResults: this.result.insertResults,
126+
updateResults: this.result.updateResults,
127+
deleteResults: this.result.deleteResults
128+
};
129+
}
130+
75131
/**
76132
* Merge the results in the cursor to the existing result.
77133
* @param currentBatchOffset - The offset index to the original models.

0 commit comments

Comments
 (0)