Skip to content

Commit 85a3dc0

Browse files
committed
add callback api to executeIndex()
1 parent 07cea16 commit 85a3dc0

File tree

2 files changed

+68
-24
lines changed

2 files changed

+68
-24
lines changed

src/Documents/DocumentStoreBase.ts

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import { DocumentStore } from "./DocumentStore";
2626
import { TypeUtil } from "../Utility/TypeUtil";
2727
import { AbstractIndexCreationTaskBase } from "./Indexes/AbstractIndexCreationTaskBase";
2828
import { CaseInsensitiveKeysMap } from "../Primitives/CaseInsensitiveKeysMap";
29+
import { ErrorFirstCallback } from "../Types/Callbacks";
30+
import { passResultToCallback } from "../Utility/PromiseUtil";
31+
import { AbstractIndexCreationTask } from "./Indexes/AbstractIndexCreationTask";
2932

3033
export 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
}

src/Documents/IDocumentStore.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { IDatabaseChanges } from "./Changes/IDatabaseChanges";
1919
import { DocumentSubscriptions } from "./Subscriptions/DocumentSubscriptions";
2020
import { SessionOptions } from "./Session/SessionOptions";
2121
import { AbstractIndexCreationTaskBase } from "./Indexes/AbstractIndexCreationTaskBase";
22+
import { ErrorFirstCallback } from "../Types/Callbacks";
2223

2324
export interface SessionEventsProxy {
2425
addSessionListener(eventName: "beforeStore", eventHandler: (eventArgs: SessionBeforeStoreEventArgs) => void): this;
@@ -148,13 +149,34 @@ export interface IDocumentStore extends IDisposable,
148149
/**
149150
* Executes the index creation
150151
*/
151-
executeIndexes(tasks: AbstractIndexCreationTaskBase[]): Promise<void>;
152+
executeIndex(task: AbstractIndexCreationTask, callback: ErrorFirstCallback<void>): Promise<void>;
153+
154+
/**
155+
* Executes the index creation
156+
*/
157+
executeIndex(task: AbstractIndexCreationTask, database: string, callback: ErrorFirstCallback<void>): Promise<void>;
158+
159+
/**
160+
* Executes the index creation
161+
*/
162+
executeIndexes(tasks: AbstractIndexCreationTask[]): Promise<void>;
152163

153164
/**
154165
* Executes the index creation
155166
*/
156167
executeIndexes(tasks: AbstractIndexCreationTaskBase[], database: string): Promise<void>;
157168

169+
/**
170+
* Executes the index creation
171+
*/
172+
executeIndexes(tasks: AbstractIndexCreationTask[], callback: ErrorFirstCallback<void>): Promise<void>;
173+
174+
/**
175+
* Executes the index creation
176+
*/
177+
executeIndexes(
178+
tasks: AbstractIndexCreationTask[], database: string, callback: ErrorFirstCallback<void>): Promise<void>;
179+
158180
/**
159181
* Contains authentication information: client certificate data;
160182
*/

0 commit comments

Comments
 (0)