Skip to content

Commit a78b761

Browse files
committed
Fix regression in _internalPipelineToExecutePipelineRequestProto
1 parent 31535d9 commit a78b761

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

packages/firestore/src/remote/internal_serializer.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,23 @@
1818
import { ensureFirestoreConfigured, Firestore } from '../api/database';
1919
import { AggregateImpl } from '../core/aggregate';
2020
import { queryToAggregateTarget, queryToTarget } from '../core/query';
21+
import {
22+
StructuredPipeline,
23+
StructuredPipelineOptions
24+
} from '../core/structured_pipeline';
2125
import { AggregateSpec } from '../lite-api/aggregate_types';
2226
import { getDatastore } from '../lite-api/components';
2327
import { Pipeline } from '../lite-api/pipeline';
2428
import { Query } from '../lite-api/reference';
29+
import { ExecutePipelineRequest as ProtoExecutePipelineRequest } from '../protos/firestore_proto_api';
2530
import { cast } from '../util/input_validation';
2631
import { mapToArray } from '../util/obj';
2732

28-
import { toQueryTarget, toRunAggregationQueryRequest } from './serializer';
33+
import {
34+
getEncodedDatabaseId,
35+
toQueryTarget,
36+
toRunAggregationQueryRequest
37+
} from './serializer';
2938

3039
/**
3140
* @internal
@@ -112,5 +121,15 @@ export function _internalPipelineToExecutePipelineRequestProto(
112121
if (serializer === undefined) {
113122
return null;
114123
}
115-
return pipeline._toProto(serializer);
124+
125+
const structuredPipeline = new StructuredPipeline(
126+
pipeline,
127+
new StructuredPipelineOptions()
128+
);
129+
const executePipelineRequest: ProtoExecutePipelineRequest = {
130+
database: getEncodedDatabaseId(serializer),
131+
structuredPipeline: structuredPipeline._toProto(serializer)
132+
};
133+
134+
return executePipelineRequest;
116135
}

packages/firestore/test/integration/api/pipeline.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -346,18 +346,19 @@ const timestampDeltaMS = 1000;
346346

347347
describe('console support', () => {
348348
it('supports internal serialization to proto', async () => {
349+
// Perform the same test as the console
349350
const pipeline = firestore
350351
.pipeline()
351-
.collection('books')
352-
.where(equal('awards.hugo', true))
353-
.select(
354-
'title',
355-
field('nestedField.level.1'),
356-
mapGet('nestedField', 'level.1').mapGet('level.2').as('nested')
357-
);
352+
.collection('customers')
353+
.where(field('country').equal('United Kingdom'));
358354

359355
const proto = _internalPipelineToExecutePipelineRequestProto(pipeline);
360-
expect(proto).not.to.be.null;
356+
357+
const expectedStructuredPipelineProto =
358+
'{"pipeline":{"stages":[{"name":"collection","options":{},"args":[{"referenceValue":"/customers"}]},{"name":"where","options":{},"args":[{"functionValue":{"name":"equal","args":[{"fieldReferenceValue":"country"},{"stringValue":"United Kingdom"}]}}]}]}}';
359+
expect(JSON.stringify(proto.structuredPipeline)).to.equal(
360+
expectedStructuredPipelineProto
361+
);
361362
});
362363
});
363364

0 commit comments

Comments
 (0)