@@ -2,17 +2,21 @@ import { type Connection } from '..';
22import type { Document } from '../bson' ;
33import type { BulkWriteOptions } from '../bulk/common' ;
44import { MongoDBResponse } from '../cmap/wire_protocol/responses' ;
5- import type { Collection } from '../collection' ;
6- import { MongoServerError } from '../error' ;
75import type { InferIdType } from '../mongo_types' ;
8- import type { Server } from '../sdam/server' ;
96import type { ClientSession } from '../sessions' ;
10- import { type TimeoutContext } from '../timeout' ;
11- import { maybeAddIdToDocuments , type MongoDBNamespace } from '../utils' ;
7+ import { type MongoDBNamespace } from '../utils' ;
128import { type CommandOperationOptions , ModernizedCommandOperation } from './command' ;
139import { Aspect , defineAspects } from './operation' ;
10+
1411/** @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 > {
1620 override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse ;
1721 override options : BulkWriteOptions ;
1822
@@ -68,44 +72,6 @@ export interface InsertOneResult<TSchema = Document> {
6872 insertedId : InferIdType < TSchema > ;
6973}
7074
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-
10975/** @public */
11076export interface InsertManyResult < TSchema = Document > {
11177 /** 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> {
11783}
11884
11985defineAspects ( InsertOperation , [ Aspect . RETRYABLE , Aspect . WRITE_OPERATION ] ) ;
120- defineAspects ( InsertOneOperation , [ Aspect . RETRYABLE , Aspect . WRITE_OPERATION ] ) ;
0 commit comments