Skip to content

Commit 3199931

Browse files
authored
Refactor and fix pipelines (#1922)
* Refactor pipelines * Pretty * Simplify
1 parent d6bb0d2 commit 3199931

23 files changed

+155
-362
lines changed

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/AbstractStage.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/AddFields.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.InternalApi;
2022
import com.google.cloud.firestore.pipeline.expressions.Expr;
23+
import com.google.firestore.v1.Pipeline;
2124
import java.util.Map;
2225

2326
@InternalApi
24-
public final class AddFields implements Stage {
27+
public final class AddFields extends Stage {
2528

2629
private static final String name = "add_fields";
2730
private final Map<String, Expr> fields;
@@ -31,13 +34,8 @@ public AddFields(Map<String, Expr> fields) {
3134
this.fields = fields;
3235
}
3336

34-
@InternalApi
35-
public Map<String, Expr> getFields() {
36-
return fields;
37-
}
38-
3937
@Override
40-
public String getName() {
41-
return name;
38+
Pipeline.Stage toStageProto() {
39+
return Pipeline.Stage.newBuilder().setName(name).addArgs(encodeValue(fields)).build();
4240
}
4341
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Aggregate.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,22 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.BetaApi;
20-
import com.google.api.core.InternalApi;
2122
import com.google.cloud.firestore.PipelineUtils;
2223
import com.google.cloud.firestore.pipeline.expressions.Accumulator;
2324
import com.google.cloud.firestore.pipeline.expressions.Expr;
2425
import com.google.cloud.firestore.pipeline.expressions.ExprWithAlias;
2526
import com.google.cloud.firestore.pipeline.expressions.Selectable;
27+
import com.google.firestore.v1.Pipeline;
2628
import java.util.Arrays;
2729
import java.util.Collections;
2830
import java.util.Map;
2931
import java.util.stream.Collectors;
3032

3133
@BetaApi
32-
public final class Aggregate implements Stage {
34+
public final class Aggregate extends Stage {
3335

3436
private static final String name = "aggregate";
3537
private final Map<String, Expr> groups;
@@ -63,18 +65,12 @@ private Aggregate(Map<String, Expr> groups, Map<String, Accumulator> accumulator
6365
this.accumulators = accumulators;
6466
}
6567

66-
@InternalApi
67-
Map<String, Expr> getGroups() {
68-
return groups;
69-
}
70-
71-
@InternalApi
72-
Map<String, Accumulator> getAccumulators() {
73-
return accumulators;
74-
}
75-
7668
@Override
77-
public String getName() {
78-
return name;
69+
Pipeline.Stage toStageProto() {
70+
return Pipeline.Stage.newBuilder()
71+
.setName(name)
72+
.addArgs(encodeValue(accumulators))
73+
.addArgs(encodeValue(groups))
74+
.build();
7975
}
8076
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Collection.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
package com.google.cloud.firestore.pipeline.stages;
1818

1919
import com.google.api.core.InternalApi;
20+
import com.google.firestore.v1.Pipeline;
21+
import com.google.firestore.v1.Value;
2022
import javax.annotation.Nonnull;
2123

2224
@InternalApi
23-
public final class Collection implements Stage {
25+
public final class Collection extends Stage {
2426

2527
private static final String name = "collection";
2628
@Nonnull private final String path;
@@ -34,13 +36,11 @@ public Collection(@Nonnull String path) {
3436
}
3537
}
3638

37-
@InternalApi
38-
public String getPath() {
39-
return path;
40-
}
41-
4239
@Override
43-
public String getName() {
44-
return name;
40+
Pipeline.Stage toStageProto() {
41+
return Pipeline.Stage.newBuilder()
42+
.setName(name)
43+
.addArgs(Value.newBuilder().setReferenceValue(path).build())
44+
.build();
4545
}
4646
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/CollectionGroup.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.InternalApi;
22+
import com.google.firestore.v1.Pipeline;
23+
import com.google.firestore.v1.Value;
2024

2125
@InternalApi
22-
public final class CollectionGroup implements Stage {
26+
public final class CollectionGroup extends Stage {
2327

2428
private static final String name = "collection_group";
2529
private final String collectionId;
@@ -29,13 +33,12 @@ public CollectionGroup(String collectionId) {
2933
this.collectionId = collectionId;
3034
}
3135

32-
@InternalApi
33-
public String getCollectionId() {
34-
return collectionId;
35-
}
36-
3736
@Override
38-
public String getName() {
39-
return name;
37+
Pipeline.Stage toStageProto() {
38+
return Pipeline.Stage.newBuilder()
39+
.setName(name)
40+
.addArgs(Value.newBuilder().setReferenceValue("").build())
41+
.addArgs(encodeValue(collectionId))
42+
.build();
4043
}
4144
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Database.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,17 @@
1717
package com.google.cloud.firestore.pipeline.stages;
1818

1919
import com.google.api.core.InternalApi;
20+
import com.google.firestore.v1.Pipeline;
2021

2122
@InternalApi
22-
public final class Database implements Stage {
23+
public final class Database extends Stage {
2324
private static final String name = "database";
2425

2526
@InternalApi
2627
public Database() {}
2728

2829
@Override
29-
public String getName() {
30-
return name;
30+
Pipeline.Stage toStageProto() {
31+
return Pipeline.Stage.newBuilder().setName(name).build();
3132
}
3233
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Distinct.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.BetaApi;
2022
import com.google.api.core.InternalApi;
2123
import com.google.cloud.firestore.pipeline.expressions.Expr;
24+
import com.google.firestore.v1.Pipeline;
2225
import java.util.Map;
2326

2427
@BetaApi
25-
public final class Distinct implements Stage {
28+
public final class Distinct extends Stage {
2629

2730
private static final String name = "distinct";
2831
private final Map<String, Expr> groups;
@@ -32,13 +35,8 @@ public Distinct(Map<String, Expr> groups) {
3235
this.groups = groups;
3336
}
3437

35-
@InternalApi
36-
Map<String, Expr> getGroups() {
37-
return groups;
38-
}
39-
4038
@Override
41-
public String getName() {
42-
return name;
39+
Pipeline.Stage toStageProto() {
40+
return Pipeline.Stage.newBuilder().setName(name).addArgs(encodeValue(groups)).build();
4341
}
4442
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Documents.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818

1919
import com.google.api.core.InternalApi;
2020
import com.google.cloud.firestore.DocumentReference;
21+
import com.google.firestore.v1.Pipeline;
2122
import java.util.Arrays;
2223
import java.util.List;
2324
import java.util.stream.Collectors;
2425

2526
@InternalApi
26-
public final class Documents implements Stage {
27+
public final class Documents extends Stage {
2728

2829
private static final String name = "documents";
2930
private List<String> documents;
@@ -39,13 +40,12 @@ public static Documents of(DocumentReference... documents) {
3940
Arrays.stream(documents).map(doc -> "/" + doc.getPath()).collect(Collectors.toList()));
4041
}
4142

42-
@InternalApi
43-
public List<String> getDocuments() {
44-
return documents;
45-
}
46-
4743
@Override
48-
public String getName() {
49-
return name;
44+
Pipeline.Stage toStageProto() {
45+
Pipeline.Stage.Builder builder = Pipeline.Stage.newBuilder().setName(name);
46+
for (String document : documents) {
47+
builder.addArgsBuilder().setStringValue(document);
48+
}
49+
return builder.build();
5050
}
5151
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/FindNearest.java

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.BetaApi;
2022
import com.google.api.core.InternalApi;
2123
import com.google.cloud.firestore.pipeline.expressions.Expr;
24+
import com.google.firestore.v1.Pipeline;
2225

2326
@BetaApi
24-
public final class FindNearest implements Stage {
27+
public final class FindNearest extends Stage {
2528

2629
public interface DistanceMeasure {
2730

@@ -109,28 +112,14 @@ public FindNearest(
109112
}
110113

111114
@Override
112-
@InternalApi
113-
public String getName() {
114-
return name;
115-
}
116-
117-
@InternalApi
118-
public Expr getProperty() {
119-
return property;
120-
}
121-
122-
@InternalApi
123-
public double[] getVector() {
124-
return vector;
125-
}
126-
127-
@InternalApi
128-
public DistanceMeasure getDistanceMeasure() {
129-
return distanceMeasure;
130-
}
131-
132-
@InternalApi
133-
public FindNearestOptions getOptions() {
134-
return options;
115+
Pipeline.Stage toStageProto() {
116+
return Pipeline.Stage.newBuilder()
117+
.setName(name)
118+
.addArgs(encodeValue(property))
119+
.addArgs(encodeValue(vector))
120+
.addArgs(encodeValue(distanceMeasure.toProtoString()))
121+
.putOptions("limit", encodeValue(options.getLimit()))
122+
.putOptions("distance_field", encodeValue(options.getDistanceField()))
123+
.build();
135124
}
136125
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/GenericStage.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@
1616

1717
package com.google.cloud.firestore.pipeline.stages;
1818

19+
import static com.google.cloud.firestore.PipelineUtils.encodeValue;
20+
1921
import com.google.api.core.InternalApi;
22+
import com.google.firestore.v1.Pipeline;
2023
import java.util.List;
2124

2225
@InternalApi
23-
public final class GenericStage implements Stage {
26+
public final class GenericStage extends Stage {
2427

2528
private final String name;
2629
private List<Object> params;
@@ -32,13 +35,11 @@ public GenericStage(String name, List<Object> params) {
3235
}
3336

3437
@Override
35-
@InternalApi
36-
public String getName() {
37-
return name;
38-
}
39-
40-
@InternalApi
41-
public List<Object> getParams() {
42-
return params;
38+
Pipeline.Stage toStageProto() {
39+
Pipeline.Stage.Builder builder = Pipeline.Stage.newBuilder().setName(name);
40+
for (Object param : params) {
41+
builder.addArgs(encodeValue(param));
42+
}
43+
return builder.build();
4344
}
4445
}

0 commit comments

Comments
 (0)