diff --git a/dev/src/reference.ts b/dev/src/reference.ts index a2829a42f..c1a2c3dd6 100644 --- a/dev/src/reference.ts +++ b/dev/src/reference.ts @@ -1619,7 +1619,9 @@ export class Query implements firestore.Query { * @param aggregates the aggregations to perform. * @return an `AggregateQuery` that performs the given aggregations. */ - aggregate(aggregates: T): AggregateQuery { + aggregate( + aggregates: T + ): AggregateQuery { return new AggregateQuery(this, aggregates); } @@ -2308,10 +2310,10 @@ export class Query implements firestore.Query { callback(undefined, {document: lastReceivedDocument, readTime}); if (proto.done) { logger('Query._stream', tag, 'Trigger Logical Termination.'); - backendStream.unpipe(stream); - backendStream.resume(); - backendStream.end(); - stream.end(); + backendStream.unpipe(stream); + backendStream.resume(); + backendStream.end(); + stream.end(); } } else { callback(undefined, {readTime}); @@ -2868,7 +2870,9 @@ export class AggregateField implements firestore.AggregateField { } } -export class AggregateQuery implements firestore.AggregateQuery { +export class AggregateQuery + implements firestore.AggregateQuery { + private readonly _query: Query; private readonly _aggregates: T; @@ -2940,25 +2944,27 @@ export class AggregateQuery implements firest data[prop] = serializer.decodeValue(fields[prop]); } } - const result = new AggregateQuerySnapshot(this, readTime, data as any); //TODO(tomandersen) remove `as any` + //TODO(tomandersen) remove `as any` + const result = new AggregateQuerySnapshot(this, readTime, data as any); callback(undefined, result); } else { callback(Error('unexpected')); } }, - }) + }); + firestore .initializeIfNeeded(tag) .then(async () => { const request = this.toProto(transactionId); const backendStream = await firestore.requestStream( 'runAggregationQuery', - /* bidirectional= */ false, + /* bidirectional= */ false, request, tag ); stream.on('close', () => { - backendStream.resume() + backendStream.resume(); backendStream.end(); }) backendStream.on('error', err => { @@ -3009,7 +3015,6 @@ export class AggregateQuery implements firest } isEqual(other: firestore.AggregateQuery): boolean { - new AggregateQuery(null as any, {2: AggregateField.count()}) if (this === other) { return true; } diff --git a/dev/system-test/firestore.ts b/dev/system-test/firestore.ts index d863dfbf4..c8fd096fb 100644 --- a/dev/system-test/firestore.ts +++ b/dev/system-test/firestore.ts @@ -17,7 +17,6 @@ import { DocumentData, WithFieldValue, PartialWithFieldValue, - AggregateQuery, SetOptions, Settings, } from '@google-cloud/firestore'; diff --git a/dev/test/aggregateQuery.ts b/dev/test/aggregateQuery.ts index c0e24d23d..582ede285 100644 --- a/dev/test/aggregateQuery.ts +++ b/dev/test/aggregateQuery.ts @@ -25,7 +25,7 @@ import {expect, use} from 'chai'; import {google} from '../protos/firestore_v1_proto_api'; import api = google.firestore.v1; import * as chaiAsPromised from 'chai-as-promised'; -import {setTimeoutHandler} from "../src/backoff"; +import {setTimeoutHandler} from '../src/backoff'; use(chaiAsPromised); describe('aggregate query interface', () => { @@ -109,7 +109,7 @@ describe('aggregate query interface', () => { readTime: {seconds: 5, nanos: 6}, }; const overrides: ApiOverride = { - runAggregationQuery: request => streamWithoutEnd(result), + runAggregationQuery: () => streamWithoutEnd(result), }; firestore = await createInstance(overrides); diff --git a/dev/test/count.ts b/dev/test/count.ts index fc29399ad..e7e3c0c3e 100644 --- a/dev/test/count.ts +++ b/dev/test/count.ts @@ -15,7 +15,7 @@ import {expect} from 'chai'; import {Firestore} from '../src'; -import {AggregateField} from "../src/reference"; +import {AggregateField} from '../src/reference'; export async function Demo0_NormalQuery(db: Firestore) { const query = db.collection('games/halo/players'); diff --git a/dev/test/query.ts b/dev/test/query.ts index 392425e2b..96fa57a54 100644 --- a/dev/test/query.ts +++ b/dev/test/query.ts @@ -410,15 +410,15 @@ describe('query interface', () => { const queryB = firestore.collection('collectionId'); const queryEquals = (equals: Query[], notEquals: Query[]) => { - for (const equal1 of equals) { - for (const equal2 of equals) { - expect(equal1.isEqual(equal2)).to.be.true; - expect(equal2.isEqual(equal1)).to.be.true; + for (let i = 0; i < equals.length; ++i) { + for (const equal of equals) { + expect(equals[i].isEqual(equal)).to.be.true; + expect(equal.isEqual(equals[i])).to.be.true; } for (const notEqual of notEquals) { - expect(equal1.isEqual(notEqual)).to.be.false; - expect(notEqual.isEqual(equal1)).to.be.false; + expect(equals[i].isEqual(notEqual)).to.be.false; + expect(notEqual.isEqual(equals[i])).to.be.false; } } }; @@ -630,7 +630,7 @@ describe('query interface', () => { }); // Test Logical Termination on get() - it('successful return without ending the stream on get()', async () => { + it('successful return without ending the stream on get()', () => { const overrides: ApiOverride = { runQuery: request => { queryEquals(request);