Skip to content

Commit 37af44b

Browse files
committed
add callback api to executeIndex()
1 parent a7da24e commit 37af44b

File tree

2 files changed

+65
-45
lines changed

2 files changed

+65
-45
lines changed

src/Documents/DocumentStoreBase.ts

Lines changed: 43 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ import { BulkInsertOperation } from "./BulkInsertOperation";
2424
import { IDatabaseChanges } from "./Changes/IDatabaseChanges";
2525
import { DocumentSubscriptions } from "./Subscriptions/DocumentSubscriptions";
2626
import { DocumentStore } from "./DocumentStore";
27+
import { AbstractCallback } from "../Types/Callbacks";
28+
import { TypeUtil } from "../Utility/TypeUtil";
29+
import { passResultToCallback } from "../Utility/PromiseUtil";
2730

2831
export abstract class DocumentStoreBase
2932
extends EventEmitter
@@ -63,35 +66,49 @@ export abstract class DocumentStoreBase
6366
public abstract openSession(sessionOptions: SessionOptions): IDocumentSession;
6467

6568
public executeIndex(task: AbstractIndexCreationTask): Promise<void>;
66-
public executeIndex(task: AbstractIndexCreationTask, database?: string): Promise<void>;
67-
public executeIndex(task: AbstractIndexCreationTask, database?: string): Promise<void> {
69+
public executeIndex(task: AbstractIndexCreationTask, database: string): Promise<void>;
70+
public executeIndex(task: AbstractIndexCreationTask, callback: AbstractCallback<void>): Promise<void>;
71+
public executeIndex(
72+
task: AbstractIndexCreationTask,
73+
database: string,
74+
callback: AbstractCallback<void>): Promise<void>;
75+
public executeIndex(
76+
task: AbstractIndexCreationTask,
77+
databaseOrCallback?: string | AbstractCallback<void>,
78+
callback?: AbstractCallback<void>): Promise<void> {
6879
this.assertInitialized();
69-
return task.execute(this, this.conventions, database);
80+
const database = TypeUtil.isFunction(databaseOrCallback)
81+
? null
82+
: databaseOrCallback as string;
83+
const resultPromise = task.execute(this, this.conventions, database);
84+
passResultToCallback(resultPromise, callback || TypeUtil.NOOP);
85+
return resultPromise;
7086
}
7187

72-
// TODO: public void executeIndex(AbstractIndexCreationTask task) {
73-
// executeIndex(task, null);
74-
// }
75-
76-
// TODO: public void executeIndex(AbstractIndexCreationTask task, String database) {
77-
// assertInitialized();
78-
// task.execute(this, conventions, database);
79-
// }
80-
81-
// TODO: @Override
82-
// public void executeIndexes(List<AbstractIndexCreationTask> tasks) {
83-
// executeIndexes(tasks, null);
84-
// }
85-
86-
// TODO: @Override
87-
// public void executeIndexes(List<AbstractIndexCreationTask> tasks, String database) {
88-
// assertInitialized();
89-
// IndexDefinition[] indexesToAdd = IndexCreation.createIndexesToAdd(tasks, conventions);
90-
91-
// TODO: maintenance()
92-
// .forDatabase(ObjectUtils.firstNonNull(database, getDatabase()))
93-
// .send(new PutIndexesOperation(indexesToAdd));
94-
// }
88+
public async executeIndexes(tasks: AbstractIndexCreationTask[]): Promise<void>;
89+
public async executeIndexes(
90+
tasks: AbstractIndexCreationTask[], callback: AbstractCallback<void>): Promise<void>;
91+
public async executeIndexes(tasks: AbstractIndexCreationTask[], database: string): Promise<void>;
92+
public async executeIndexes(
93+
tasks: AbstractIndexCreationTask[], database: string, callback: AbstractCallback<void>): Promise<void>;
94+
public async executeIndexes(
95+
tasks: AbstractIndexCreationTask[],
96+
databaseOrCallback?: string | AbstractCallback<void>,
97+
callback?: AbstractCallback<void>): Promise<void> {
98+
this.assertInitialized();
99+
const indexesToAdd = IndexCreation.createIndexesToAdd(tasks, this.conventions);
100+
const database = TypeUtil.isFunction(databaseOrCallback)
101+
? null
102+
: databaseOrCallback as string;
103+
104+
const resultPromise = this.maintenance
105+
.forDatabase(database || this.database)
106+
.send(new PutIndexesOperation(...indexesToAdd))
107+
.then(() => {});
108+
109+
passResultToCallback(resultPromise, callback || TypeUtil.NOOP);
110+
return resultPromise;
111+
}
95112

96113
private _conventions: DocumentConventions;
97114

@@ -234,25 +251,6 @@ export abstract class DocumentStoreBase
234251

235252
public abstract operations: OperationExecutor;
236253

237-
public executeIndexes(tasks: AbstractIndexCreationTask[]): Promise<void>;
238-
public executeIndexes(tasks: AbstractIndexCreationTask[], database: string): Promise<void>;
239-
public executeIndexes(tasks: AbstractIndexCreationTask[], database?: string): Promise<void> {
240-
241-
this.assertInitialized();
242-
243-
return Promise.resolve()
244-
.then(() => {
245-
const indexesToAdd = IndexCreation.createIndexesToAdd(tasks, this.conventions);
246-
247-
return this.maintenance
248-
.forDatabase(database || this.database)
249-
.send(new PutIndexesOperation(...indexesToAdd));
250-
})
251-
// tslint:disable-next-line:no-empty
252-
.then(() => {
253-
});
254-
}
255-
256254
protected _assertValidConfiguration(): void {
257255
this.conventions.validate();
258256
}

src/Documents/IDocumentStore.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { InMemoryDocumentSessionOperations } from "./Session/InMemoryDocumentSes
1717
import { BulkInsertOperation } from "./BulkInsertOperation";
1818
import { IDatabaseChanges } from "./Changes/IDatabaseChanges";
1919
import { DocumentSubscriptions } from "./Subscriptions/DocumentSubscriptions";
20+
import { AbstractCallback } from "../Types/Callbacks";
2021

2122
export interface SessionEventsProxy {
2223
addSessionListener(eventName: "beforeStore", eventHandler: (eventArgs: SessionBeforeStoreEventArgs) => void): this;
@@ -143,6 +144,16 @@ export interface IDocumentStore extends IDisposable,
143144
*/
144145
executeIndex(task: AbstractIndexCreationTask, database: string): Promise<void>;
145146

147+
/**
148+
* Executes the index creation
149+
*/
150+
executeIndex(task: AbstractIndexCreationTask, callback: AbstractCallback<void>): Promise<void>;
151+
152+
/**
153+
* Executes the index creation
154+
*/
155+
executeIndex(task: AbstractIndexCreationTask, database: string, callback: AbstractCallback<void>): Promise<void>;
156+
146157
/**
147158
* Executes the index creation
148159
*/
@@ -153,6 +164,17 @@ export interface IDocumentStore extends IDisposable,
153164
*/
154165
executeIndexes(tasks: AbstractIndexCreationTask[], database: string): Promise<void>;
155166

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

0 commit comments

Comments
 (0)