Skip to content

Commit 964e4d5

Browse files
authored
Merge pull request #175 from gregolsky/v4.1
minor api fixes and code cleanup
2 parents 3f1e9ca + 77f456f commit 964e4d5

40 files changed

+433
-278
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Documents/BulkInsertOperation.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { EntityToJson } from "./Session/EntityToJson";
1818
import { KillOperationCommand } from "./Commands/KillOperationCommand";
1919
import { DocumentConventions } from "./Conventions/DocumentConventions";
2020
import { ServerNode } from "../Http/ServerNode";
21-
import { AbstractCallback } from "../Types/Callbacks";
21+
import { ErrorFirstCallback } from "../Types/Callbacks";
2222
import { passResultToCallback } from "../Utility/PromiseUtil";
2323
import { BatchOperation } from "./Session/Operations/BatchOperation";
2424
import { MetadataObject } from "./Session/MetadataObject";
@@ -81,9 +81,9 @@ export class BulkInsertOperation {
8181
}
8282

8383
private static _typeCheckStoreArgs(
84-
idOrMetadataOrCallback?: string | IMetadataDictionary | AbstractCallback<void>,
85-
metadataOrCallback?: IMetadataDictionary | AbstractCallback<void>,
86-
callback?: AbstractCallback<void>):
84+
idOrMetadataOrCallback?: string | IMetadataDictionary | ErrorFirstCallback<void>,
85+
metadataOrCallback?: IMetadataDictionary | ErrorFirstCallback<void>,
86+
callback?: ErrorFirstCallback<void>):
8787
{ id: string, getId: boolean, metadata: IMetadataDictionary, cb: () => void } {
8888

8989
let id: string;
@@ -101,7 +101,7 @@ export class BulkInsertOperation {
101101
}
102102
} else {
103103
metadata = idOrMetadataOrCallback;
104-
callback = metadataOrCallback as AbstractCallback<void>;
104+
callback = metadataOrCallback as ErrorFirstCallback<void>;
105105
if (metadata && (CONSTANTS.Documents.Metadata.ID in metadata)) {
106106
id = metadata[CONSTANTS.Documents.Metadata.ID];
107107
}
@@ -115,18 +115,18 @@ export class BulkInsertOperation {
115115
}
116116

117117
public async store(entity: object);
118-
public async store(entity: object, callback: AbstractCallback<void>);
118+
public async store(entity: object, callback: ErrorFirstCallback<void>);
119119
public async store(entity: object, id: string);
120120
public async store(entity: object, metadata: IMetadataDictionary);
121121
public async store(entity: object, id: string, metadata: IMetadataDictionary);
122-
public async store(entity: object, id: string, callback: AbstractCallback<void>);
123-
public async store(entity: object, metadata: IMetadataDictionary, callback: AbstractCallback<void>);
124-
public async store(entity: object, id: string, metadata: IMetadataDictionary, callback: AbstractCallback<void>);
122+
public async store(entity: object, id: string, callback: ErrorFirstCallback<void>);
123+
public async store(entity: object, metadata: IMetadataDictionary, callback: ErrorFirstCallback<void>);
124+
public async store(entity: object, id: string, metadata: IMetadataDictionary, callback: ErrorFirstCallback<void>);
125125
public async store(
126126
entity: object,
127-
idOrMetadataOrCallback?: string | IMetadataDictionary | AbstractCallback<void>,
128-
metadataOrCallback?: IMetadataDictionary | AbstractCallback<void>,
129-
callback?: AbstractCallback<void>) {
127+
idOrMetadataOrCallback?: string | IMetadataDictionary | ErrorFirstCallback<void>,
128+
metadataOrCallback?: IMetadataDictionary | ErrorFirstCallback<void>,
129+
callback?: ErrorFirstCallback<void>) {
130130
let opts: { id: string, getId: boolean, metadata: IMetadataDictionary, cb: () => void };
131131
try {
132132
// tslint:disable-next-line:prefer-const
@@ -285,8 +285,8 @@ export class BulkInsertOperation {
285285
}
286286

287287
public async abort(): Promise<void>;
288-
public async abort(callback: AbstractCallback<void>): Promise<void>;
289-
public async abort(callback?: AbstractCallback<void>): Promise<void> {
288+
public async abort(callback: ErrorFirstCallback<void>): Promise<void>;
289+
public async abort(callback?: ErrorFirstCallback<void>): Promise<void> {
290290
const abortPromise = this._abortAsync();
291291
passResultToCallback(abortPromise, callback);
292292
return await abortPromise;
@@ -313,8 +313,8 @@ export class BulkInsertOperation {
313313
}
314314

315315
public async finish(): Promise<void>;
316-
public async finish(callback: AbstractCallback<void>): Promise<void>;
317-
public async finish(callback?: AbstractCallback<void>): Promise<void> {
316+
public async finish(callback: ErrorFirstCallback<void>): Promise<void>;
317+
public async finish(callback?: ErrorFirstCallback<void>): Promise<void> {
318318
const finishPromise = this._finishAsync();
319319
passResultToCallback(finishPromise, callback);
320320
return finishPromise;

src/Documents/Commands/Batches/BatchCommand.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -105,21 +105,6 @@ export class BatchCommand extends RavenCommand<BatchCommandResult> implements ID
105105
}
106106

107107
return request;
108-
/* TBD: attachments - TODO: delete me?
109-
110-
if (_attachmentStreams != null && _attachmentStreams.Count > 0)
111-
{
112-
var multipartContent = new MultipartContent {request.Content};
113-
foreach (var stream in _attachmentStreams)
114-
{
115-
PutAttachmentCommandHelper.PrepareStream(stream);
116-
var streamContent = new AttachmentStreamContent(stream, CancellationToken);
117-
streamContent.Headers.TryAddWithoutValidation("Command-Type", "AttachmentStream");
118-
multipartContent.Add(streamContent);
119-
}
120-
request.Content = multipartContent;
121-
}
122-
*/
123108
}
124109

125110
public async setResponseAsync(bodyStream: stream.Stream, fromCache: boolean): Promise<string> {

src/Documents/Commands/MultiGet/GetRequest.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
//TODO: fill missing JSDocs?
21
export class GetRequest {
32
private _url: string;
43
private _headers: { [key: string]: string | string[] };

src/Documents/Conventions/DocumentConventions.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export class DocumentConventions {
4545
private _frozen: boolean;
4646
private _originalConfiguration: ClientConfiguration;
4747
private _idPropertyCache: Map<ObjectTypeDescriptor, string> = new Map(); //TODO: is it used?
48-
// TODO: private _saveEnumsAsIntegers: number;
4948
private _identityPartsSeparator: string;
5049
private _disableTopologyUpdates: boolean;
5150

@@ -457,10 +456,6 @@ export class DocumentConventions {
457456
return this;
458457
}
459458

460-
//TODO public registerEntityTypeChecker(typeChecker: ObjectLiteralDescriptor) {
461-
// this._registeredTypeDescriptors.push(typeChecker);
462-
// }
463-
464459
public registerEntityIdPropertyName(ctorOrTypeChecker: ObjectTypeDescriptor, idProperty: string) {
465460
this._registeredIdPropertyNames.set(ctorOrTypeChecker, idProperty);
466461
}

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
*/

src/Documents/Identity/IHiloIdGenerator.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { DocumentConventions } from "../Conventions/DocumentConventions";
22

33
export interface IHiloIdGenerator {
4-
//TODO ? nextId(...args: Array<object | string | string>): Promise<number>;
54
generateDocumentId(...args: any[]): Promise<string>;
65

76
returnUnusedRange(): Promise<void>;

src/Documents/Indexes/AbstractIndexCreationTaskBase.ts

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import { IndexPriority, IndexLockMode, FieldIndexing, FieldStorage, FieldTermVec
44
import { IDocumentStore } from "../IDocumentStore";
55
import { PutIndexesOperation } from "../Operations/Indexes/PutIndexesOperation";
66
import { SpatialOptions } from "./Spatial";
7+
import { ErrorFirstCallback } from "../../Types/Callbacks";
8+
import { TypeUtil } from "../../Utility/TypeUtil";
9+
import { passResultToCallback } from "../../Utility/PromiseUtil";
710

811
export abstract class AbstractIndexCreationTaskBase {
912

@@ -39,25 +42,66 @@ export abstract class AbstractIndexCreationTaskBase {
3942
/**
4043
* Executes the index creation against the specified document store.
4144
*/
42-
public async execute(
43-
store: IDocumentStore): Promise<void>;
45+
public async execute(store: IDocumentStore): Promise<void>;
46+
/**
47+
* Executes the index creation against the specified document store.
48+
*/
49+
public async execute(store: IDocumentStore, callback: ErrorFirstCallback<void>): Promise<void>;
50+
/**
51+
* Executes the index creation against the specified document store.
52+
*/
53+
public async execute(store: IDocumentStore, conventions: DocumentConventions): Promise<void>;
4454
/**
4555
* Executes the index creation against the specified document store.
4656
*/
4757
public async execute(
48-
store: IDocumentStore, conventions: DocumentConventions): Promise<void>;
58+
store: IDocumentStore,
59+
conventions: DocumentConventions,
60+
callback: ErrorFirstCallback<void>): Promise<void>;
61+
/**
62+
* Executes the index creation against the specified document store.
63+
*/
64+
public async execute(store: IDocumentStore, conventions: DocumentConventions, database: string): Promise<void>;
4965
/**
5066
* Executes the index creation against the specified document store.
5167
*/
5268
public async execute(
53-
store: IDocumentStore, conventions: DocumentConventions, database: string): Promise<void>;
69+
store: IDocumentStore,
70+
conventions: DocumentConventions,
71+
database: string,
72+
callback: ErrorFirstCallback<void>): Promise<void>;
5473
public async execute(
55-
store: IDocumentStore, conventions?: DocumentConventions, database?: string): Promise<void> {
56-
if (arguments.length === 1) {
57-
return store.executeIndex(this);
74+
store: IDocumentStore,
75+
conventionsOrCallback?: DocumentConventions | ErrorFirstCallback<void>,
76+
databaseOrCallback?: string | ErrorFirstCallback<void>,
77+
callback?: ErrorFirstCallback<void>): Promise<void> {
78+
79+
let conventions: DocumentConventions;
80+
let database: string;
81+
if (arguments.length > 1) {
82+
if (TypeUtil.isFunction(conventionsOrCallback)) {
83+
callback = conventionsOrCallback;
84+
} else if (TypeUtil.isFunction(databaseOrCallback)) {
85+
callback = databaseOrCallback;
86+
conventions = conventionsOrCallback;
87+
} else {
88+
conventions = conventionsOrCallback;
89+
database = databaseOrCallback;
90+
}
91+
}
92+
93+
callback = callback || TypeUtil.NOOP;
94+
95+
let resultPromise;
96+
if (!conventions && !database) {
97+
resultPromise = store.executeIndex(this);
5898
} else {
59-
return this._putIndex(store, conventions, database);
99+
resultPromise = this._putIndex(store, conventions, database);
60100
}
101+
102+
passResultToCallback(resultPromise, callback);
103+
104+
return resultPromise;
61105
}
62106

63107
private async _putIndex(

src/Documents/Indexes/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export * from "./AbstractIndexCreationTask";
2-
export * from "./AbstractMultiMapIndexCreationTask";
2+
export * from "./AbstractMultiMapIndexCreationTask";

0 commit comments

Comments
 (0)