@@ -2,17 +2,21 @@ import { type Connection } from '..';
2
2
import type { Document } from '../bson' ;
3
3
import type { BulkWriteOptions } from '../bulk/common' ;
4
4
import { MongoDBResponse } from '../cmap/wire_protocol/responses' ;
5
- import type { Collection } from '../collection' ;
6
- import { MongoServerError } from '../error' ;
7
5
import type { InferIdType } from '../mongo_types' ;
8
- import type { Server } from '../sdam/server' ;
9
6
import type { ClientSession } from '../sessions' ;
10
- import { type TimeoutContext } from '../timeout' ;
11
- import { maybeAddIdToDocuments , type MongoDBNamespace } from '../utils' ;
7
+ import { type MongoDBNamespace } from '../utils' ;
12
8
import { type CommandOperationOptions , ModernizedCommandOperation } from './command' ;
13
9
import { Aspect , defineAspects } from './operation' ;
10
+
14
11
/** @internal */
15
- export class InsertOperation extends ModernizedCommandOperation < Document > {
12
+ export interface InsertResult {
13
+ n : number ;
14
+ code ?: number ;
15
+ writeErrors ?: Document [ ] ;
16
+ }
17
+
18
+ /** @internal */
19
+ export class InsertOperation extends ModernizedCommandOperation < InsertResult > {
16
20
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse ;
17
21
override options : BulkWriteOptions ;
18
22
@@ -68,44 +72,6 @@ export interface InsertOneResult<TSchema = Document> {
68
72
insertedId : InferIdType < TSchema > ;
69
73
}
70
74
71
- export class InsertOneOperation extends InsertOperation {
72
- constructor ( collection : Collection , doc : Document , options : InsertOneOptions ) {
73
- super ( collection . s . namespace , [ maybeAddIdToDocuments ( collection , doc , options ) ] , options ) ;
74
- }
75
-
76
- override async execute (
77
- server : Server ,
78
- session : ClientSession | undefined ,
79
- timeoutContext : TimeoutContext
80
- ) : Promise < InsertOneResult > {
81
- const res = await super . execute ( server , session , timeoutContext ) ;
82
- if ( res . code ) throw new MongoServerError ( res ) ;
83
- if ( res . writeErrors ) {
84
- // This should be a WriteError but we can't change it now because of error hierarchy
85
- throw new MongoServerError ( res . writeErrors [ 0 ] ) ;
86
- }
87
-
88
- return {
89
- acknowledged : this . writeConcern ?. w !== 0 ,
90
- insertedId : this . documents [ 0 ] . _id
91
- } ;
92
- }
93
-
94
- override handleOk ( response : InstanceType < typeof this . SERVER_COMMAND_RESPONSE_TYPE > ) : Document {
95
- const res = super . handleOk ( response ) ;
96
- if ( res . code ) throw new MongoServerError ( res ) ;
97
- if ( res . writeErrors ) {
98
- // This should be a WriteError but we can't change it now because of error hierarchy
99
- throw new MongoServerError ( res . writeErrors [ 0 ] ) ;
100
- }
101
-
102
- return {
103
- acknowledged : this . writeConcern ?. w !== 0 ,
104
- insertedId : this . documents [ 0 ] . _id
105
- } ;
106
- }
107
- }
108
-
109
75
/** @public */
110
76
export interface InsertManyResult < TSchema = Document > {
111
77
/** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
@@ -117,4 +83,3 @@ export interface InsertManyResult<TSchema = Document> {
117
83
}
118
84
119
85
defineAspects ( InsertOperation , [ Aspect . RETRYABLE , Aspect . WRITE_OPERATION ] ) ;
120
- defineAspects ( InsertOneOperation , [ Aspect . RETRYABLE , Aspect . WRITE_OPERATION ] ) ;
0 commit comments