@@ -26,6 +26,9 @@ import { DocumentStore } from "./DocumentStore";
2626import { TypeUtil } from "../Utility/TypeUtil" ;
2727import { AbstractIndexCreationTaskBase } from "./Indexes/AbstractIndexCreationTaskBase" ;
2828import { CaseInsensitiveKeysMap } from "../Primitives/CaseInsensitiveKeysMap" ;
29+ import { ErrorFirstCallback } from "../Types/Callbacks" ;
30+ import { passResultToCallback } from "../Utility/PromiseUtil" ;
31+ import { AbstractIndexCreationTask } from "./Indexes/AbstractIndexCreationTask" ;
2932
3033export abstract class DocumentStoreBase
3134 extends EventEmitter
@@ -64,11 +67,49 @@ export abstract class DocumentStoreBase
6467 public abstract openSession ( database : string ) : IDocumentSession ;
6568 public abstract openSession ( sessionOptions : SessionOptions ) : IDocumentSession ;
6669
67- public executeIndex ( task : AbstractIndexCreationTaskBase ) : Promise < void > ;
68- public executeIndex ( task : AbstractIndexCreationTaskBase , database ?: string ) : Promise < void > ;
69- public executeIndex ( task : AbstractIndexCreationTaskBase , database ?: string ) : Promise < void > {
70+ public executeIndex ( task : AbstractIndexCreationTask ) : Promise < void > ;
71+ public executeIndex ( task : AbstractIndexCreationTask , database : string ) : Promise < void > ;
72+ public executeIndex ( task : AbstractIndexCreationTask , callback : ErrorFirstCallback < void > ) : Promise < void > ;
73+ public executeIndex (
74+ task : AbstractIndexCreationTask ,
75+ database : string ,
76+ callback : ErrorFirstCallback < void > ) : Promise < void > ;
77+ public executeIndex (
78+ task : AbstractIndexCreationTask ,
79+ databaseOrCallback ?: string | ErrorFirstCallback < void > ,
80+ callback ?: ErrorFirstCallback < void > ) : Promise < void > {
7081 this . assertInitialized ( ) ;
71- return task . execute ( this , this . conventions , database ) ;
82+ const database = TypeUtil . isFunction ( databaseOrCallback )
83+ ? null
84+ : databaseOrCallback as string ;
85+ const resultPromise = task . execute ( this , this . conventions , database ) ;
86+ passResultToCallback ( resultPromise , callback || TypeUtil . NOOP ) ;
87+ return resultPromise ;
88+ }
89+
90+ public async executeIndexes ( tasks : AbstractIndexCreationTask [ ] ) : Promise < void > ;
91+ public async executeIndexes (
92+ tasks : AbstractIndexCreationTask [ ] , callback : ErrorFirstCallback < void > ) : Promise < void > ;
93+ public async executeIndexes ( tasks : AbstractIndexCreationTask [ ] , database : string ) : Promise < void > ;
94+ public async executeIndexes (
95+ tasks : AbstractIndexCreationTask [ ] , database : string , callback : ErrorFirstCallback < void > ) : Promise < void > ;
96+ public async executeIndexes (
97+ tasks : AbstractIndexCreationTask [ ] ,
98+ databaseOrCallback ?: string | ErrorFirstCallback < void > ,
99+ callback ?: ErrorFirstCallback < void > ) : Promise < void > {
100+ this . assertInitialized ( ) ;
101+ const indexesToAdd = IndexCreation . createIndexesToAdd ( tasks , this . conventions ) ;
102+ const database = TypeUtil . isFunction ( databaseOrCallback )
103+ ? null
104+ : databaseOrCallback as string ;
105+
106+ const resultPromise = this . maintenance
107+ . forDatabase ( database || this . database )
108+ . send ( new PutIndexesOperation ( ...indexesToAdd ) )
109+ . then ( ( ) => { } ) ;
110+
111+ passResultToCallback ( resultPromise , callback || TypeUtil . NOOP ) ;
112+ return resultPromise ;
72113 }
73114
74115 private _conventions : DocumentConventions ;
@@ -235,25 +276,6 @@ export abstract class DocumentStoreBase
235276
236277 public abstract operations : OperationExecutor ;
237278
238- public executeIndexes ( tasks : AbstractIndexCreationTaskBase [ ] ) : Promise < void > ;
239- public executeIndexes ( tasks : AbstractIndexCreationTaskBase [ ] , database : string ) : Promise < void > ;
240- public executeIndexes ( tasks : AbstractIndexCreationTaskBase [ ] , database ?: string ) : Promise < void > {
241-
242- this . assertInitialized ( ) ;
243-
244- return Promise . resolve ( )
245- . then ( ( ) => {
246- const indexesToAdd = IndexCreation . createIndexesToAdd ( tasks , this . conventions ) ;
247-
248- return this . maintenance
249- . forDatabase ( database || this . database )
250- . send ( new PutIndexesOperation ( ...indexesToAdd ) ) ;
251- } )
252- // tslint:disable-next-line:no-empty
253- . then ( ( ) => {
254- } ) ;
255- }
256-
257279 protected _assertValidConfiguration ( ) : void {
258280 this . conventions . validate ( ) ;
259281 }
0 commit comments