Skip to content

Commit 8e62931

Browse files
committed
feat(firestore): add support for isType pipeline expression
Adds support for `isType` pipeline expression. Ported from: googleapis/java-firestore#2329
1 parent cc7d1b4 commit 8e62931

5 files changed

Lines changed: 183 additions & 29 deletions

File tree

firebase-firestore/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
[#7893](https://github.com/firebase/firebase-android-sdk/pull/7893)
88
- [feature] Added support for `rand` and `trunc` Pipeline expressions.
99
[#7886](https://github.com/firebase/firebase-android-sdk/pull/7886)
10+
- [feature] Added support for `isType` Pipeline expression.
11+
[#7886](https://github.com/firebase/firebase-android-sdk/pull/7979)
1012

1113
# 26.1.2
1214

firebase-firestore/api.txt

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ package com.google.firebase.firestore {
206206
method public com.google.firebase.firestore.LoadBundleTask loadBundle(byte[]);
207207
method public com.google.firebase.firestore.LoadBundleTask loadBundle(java.io.InputStream);
208208
method public com.google.firebase.firestore.LoadBundleTask loadBundle(java.nio.ByteBuffer);
209-
method @com.google.common.annotations.Beta public com.google.firebase.firestore.PipelineSource pipeline();
209+
method public com.google.firebase.firestore.PipelineSource pipeline();
210210
method public com.google.android.gms.tasks.Task<java.lang.Void!> runBatch(com.google.firebase.firestore.WriteBatch.Function);
211211
method public <TResult> com.google.android.gms.tasks.Task<TResult!> runTransaction(com.google.firebase.firestore.Transaction.Function<TResult!>);
212212
method public <TResult> com.google.android.gms.tasks.Task<TResult!> runTransaction(com.google.firebase.firestore.TransactionOptions, com.google.firebase.firestore.Transaction.Function<TResult!>);
@@ -419,7 +419,7 @@ package com.google.firebase.firestore {
419419
method public com.google.firebase.firestore.PersistentCacheSettings.Builder setSizeBytes(long);
420420
}
421421

422-
@com.google.common.annotations.Beta public final class Pipeline {
422+
public final class Pipeline {
423423
method public com.google.firebase.firestore.Pipeline addFields(com.google.firebase.firestore.pipeline.Selectable field, com.google.firebase.firestore.pipeline.Selectable... additionalFields);
424424
method public com.google.firebase.firestore.Pipeline aggregate(com.google.firebase.firestore.pipeline.AggregateStage aggregateStage);
425425
method public com.google.firebase.firestore.Pipeline aggregate(com.google.firebase.firestore.pipeline.AggregateStage aggregateStage, com.google.firebase.firestore.pipeline.AggregateOptions options);
@@ -472,7 +472,7 @@ package com.google.firebase.firestore {
472472
property public final java.util.List<com.google.firebase.firestore.PipelineResult> results;
473473
}
474474

475-
@com.google.common.annotations.Beta public final class PipelineResult {
475+
public final class PipelineResult {
476476
method public Object? get(com.google.firebase.firestore.FieldPath fieldPath);
477477
method public Object? get(String field);
478478
method public com.google.firebase.Timestamp? getCreateTime();
@@ -485,7 +485,7 @@ package com.google.firebase.firestore {
485485
property public final com.google.firebase.Timestamp? updateTime;
486486
}
487487

488-
@com.google.common.annotations.Beta public final class PipelineSource {
488+
public final class PipelineSource {
489489
method public com.google.firebase.firestore.Pipeline collection(com.google.firebase.firestore.CollectionReference ref);
490490
method public com.google.firebase.firestore.Pipeline collection(com.google.firebase.firestore.CollectionReference ref, com.google.firebase.firestore.pipeline.CollectionSourceOptions options);
491491
method public com.google.firebase.firestore.Pipeline collection(String path);
@@ -727,17 +727,17 @@ package com.google.firebase.firestore.pipeline {
727727
method public com.google.firebase.firestore.pipeline.AggregateFunction sum(String fieldName);
728728
}
729729

730-
@com.google.common.annotations.Beta public final class AggregateHints extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.AggregateHints> {
730+
public final class AggregateHints extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.AggregateHints> {
731731
ctor public AggregateHints();
732732
method public com.google.firebase.firestore.pipeline.AggregateHints withForceStreamableEnabled();
733733
}
734734

735-
@com.google.common.annotations.Beta public final class AggregateOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.AggregateOptions> {
735+
public final class AggregateOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.AggregateOptions> {
736736
ctor public AggregateOptions();
737737
method public com.google.firebase.firestore.pipeline.AggregateOptions withHints(com.google.firebase.firestore.pipeline.AggregateHints hints);
738738
}
739739

740-
@com.google.common.annotations.Beta public final class AggregateStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.AggregateStage> {
740+
public final class AggregateStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.AggregateStage> {
741741
method public static com.google.firebase.firestore.pipeline.AggregateStage withAccumulators(com.google.firebase.firestore.pipeline.AliasedAggregate accumulator, com.google.firebase.firestore.pipeline.AliasedAggregate... additionalAccumulators);
742742
method public com.google.firebase.firestore.pipeline.AggregateStage withGroups(com.google.firebase.firestore.pipeline.Selectable group, java.lang.Object... additionalGroups);
743743
method public com.google.firebase.firestore.pipeline.AggregateStage withGroups(String groupField, java.lang.Object... additionalGroups);
@@ -751,14 +751,14 @@ package com.google.firebase.firestore.pipeline {
751751
public final class AliasedAggregate {
752752
}
753753

754-
@com.google.common.annotations.Beta public final class AliasedExpression extends com.google.firebase.firestore.pipeline.Selectable {
754+
public final class AliasedExpression extends com.google.firebase.firestore.pipeline.Selectable {
755755
method public String getAlias();
756756
method public com.google.firebase.firestore.pipeline.Expression getExpr();
757757
property public String alias;
758758
property public com.google.firebase.firestore.pipeline.Expression expr;
759759
}
760760

761-
@com.google.common.annotations.Beta public abstract class BooleanExpression extends com.google.firebase.firestore.pipeline.Expression {
761+
public abstract class BooleanExpression extends com.google.firebase.firestore.pipeline.Expression {
762762
ctor public BooleanExpression();
763763
method public final com.google.firebase.firestore.pipeline.Expression conditional(com.google.firebase.firestore.pipeline.Expression thenExpr, com.google.firebase.firestore.pipeline.Expression elseExpr);
764764
method public final com.google.firebase.firestore.pipeline.Expression conditional(Object thenValue, Object elseValue);
@@ -772,31 +772,31 @@ package com.google.firebase.firestore.pipeline {
772772
method public com.google.firebase.firestore.pipeline.BooleanExpression rawFunction(String name, com.google.firebase.firestore.pipeline.Expression... expr);
773773
}
774774

775-
@com.google.common.annotations.Beta public final class CollectionGroupOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionGroupOptions> {
775+
public final class CollectionGroupOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionGroupOptions> {
776776
ctor public CollectionGroupOptions();
777777
method public com.google.firebase.firestore.pipeline.CollectionGroupOptions withHints(com.google.firebase.firestore.pipeline.CollectionHints hints);
778778
}
779779

780-
@com.google.common.annotations.Beta public final class CollectionGroupSource extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.CollectionGroupSource> {
780+
public final class CollectionGroupSource extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.CollectionGroupSource> {
781781
method public String getCollectionId();
782782
property public final String collectionId;
783783
}
784784

785-
@com.google.common.annotations.Beta public final class CollectionHints extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionHints> {
785+
public final class CollectionHints extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionHints> {
786786
ctor public CollectionHints();
787787
method public com.google.firebase.firestore.pipeline.CollectionHints withForceIndex(String value);
788788
method public com.google.firebase.firestore.pipeline.CollectionHints withIgnoreIndexFields(java.lang.String... values);
789789
}
790790

791-
@com.google.common.annotations.Beta public final class CollectionSource extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.CollectionSource> {
791+
public final class CollectionSource extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.CollectionSource> {
792792
}
793793

794-
@com.google.common.annotations.Beta public final class CollectionSourceOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionSourceOptions> {
794+
public final class CollectionSourceOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.CollectionSourceOptions> {
795795
ctor public CollectionSourceOptions();
796796
method public com.google.firebase.firestore.pipeline.CollectionSourceOptions withHints(com.google.firebase.firestore.pipeline.CollectionHints hints);
797797
}
798798

799-
@com.google.common.annotations.Beta public abstract class Expression {
799+
public abstract class Expression {
800800
method public final com.google.firebase.firestore.pipeline.Expression abs();
801801
method public static final com.google.firebase.firestore.pipeline.Expression abs(com.google.firebase.firestore.pipeline.Expression numericExpr);
802802
method public static final com.google.firebase.firestore.pipeline.Expression abs(String numericField);
@@ -1061,6 +1061,9 @@ package com.google.firebase.firestore.pipeline {
10611061
method public static final com.google.firebase.firestore.pipeline.BooleanExpression isAbsent(String fieldName);
10621062
method public final com.google.firebase.firestore.pipeline.BooleanExpression isError();
10631063
method public static final com.google.firebase.firestore.pipeline.BooleanExpression isError(com.google.firebase.firestore.pipeline.Expression expr);
1064+
method public static final com.google.firebase.firestore.pipeline.BooleanExpression isType(com.google.firebase.firestore.pipeline.Expression expr, String type);
1065+
method public final com.google.firebase.firestore.pipeline.BooleanExpression isType(String type);
1066+
method public static final com.google.firebase.firestore.pipeline.BooleanExpression isType(String fieldName, String type);
10641067
method public final com.google.firebase.firestore.pipeline.Expression join(com.google.firebase.firestore.pipeline.Expression delimiterExpression);
10651068
method public static final com.google.firebase.firestore.pipeline.Expression join(com.google.firebase.firestore.pipeline.Expression arrayExpression, com.google.firebase.firestore.pipeline.Expression delimiterExpression);
10661069
method public static final com.google.firebase.firestore.pipeline.Expression join(com.google.firebase.firestore.pipeline.Expression arrayExpression, String delimiter);
@@ -1489,6 +1492,8 @@ package com.google.firebase.firestore.pipeline {
14891492
method public com.google.firebase.firestore.pipeline.BooleanExpression isAbsent(com.google.firebase.firestore.pipeline.Expression value);
14901493
method public com.google.firebase.firestore.pipeline.BooleanExpression isAbsent(String fieldName);
14911494
method public com.google.firebase.firestore.pipeline.BooleanExpression isError(com.google.firebase.firestore.pipeline.Expression expr);
1495+
method public com.google.firebase.firestore.pipeline.BooleanExpression isType(com.google.firebase.firestore.pipeline.Expression expr, String type);
1496+
method public com.google.firebase.firestore.pipeline.BooleanExpression isType(String fieldName, String type);
14921497
method public com.google.firebase.firestore.pipeline.Expression join(com.google.firebase.firestore.pipeline.Expression arrayExpression, com.google.firebase.firestore.pipeline.Expression delimiterExpression);
14931498
method public com.google.firebase.firestore.pipeline.Expression join(com.google.firebase.firestore.pipeline.Expression arrayExpression, String delimiter);
14941499
method public com.google.firebase.firestore.pipeline.Expression join(String arrayFieldName, com.google.firebase.firestore.pipeline.Expression delimiterExpression);
@@ -1660,21 +1665,21 @@ package com.google.firebase.firestore.pipeline {
16601665
method public com.google.firebase.firestore.pipeline.BooleanExpression xor(com.google.firebase.firestore.pipeline.BooleanExpression condition, com.google.firebase.firestore.pipeline.BooleanExpression... conditions);
16611666
}
16621667

1663-
@com.google.common.annotations.Beta public final class Field extends com.google.firebase.firestore.pipeline.Selectable {
1668+
public final class Field extends com.google.firebase.firestore.pipeline.Selectable {
16641669
field public static final com.google.firebase.firestore.pipeline.Field.Companion Companion;
16651670
}
16661671

16671672
public static final class Field.Companion {
16681673
}
16691674

1670-
@com.google.common.annotations.Beta public final class FindNearestOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.FindNearestOptions> {
1675+
public final class FindNearestOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.FindNearestOptions> {
16711676
ctor public FindNearestOptions();
16721677
method public com.google.firebase.firestore.pipeline.FindNearestOptions withDistanceField(com.google.firebase.firestore.pipeline.Field distanceField);
16731678
method public com.google.firebase.firestore.pipeline.FindNearestOptions? withDistanceField(String? distanceField);
16741679
method public com.google.firebase.firestore.pipeline.FindNearestOptions withLimit(long limit);
16751680
}
16761681

1677-
@com.google.common.annotations.Beta public final class FindNearestStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.FindNearestStage> {
1682+
public final class FindNearestStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.FindNearestStage> {
16781683
field public static final com.google.firebase.firestore.pipeline.FindNearestStage.Companion Companion;
16791684
}
16801685

@@ -1691,10 +1696,10 @@ package com.google.firebase.firestore.pipeline {
16911696
public static final class FindNearestStage.DistanceMeasure.Companion {
16921697
}
16931698

1694-
@com.google.common.annotations.Beta public class FunctionExpression extends com.google.firebase.firestore.pipeline.Expression {
1699+
public class FunctionExpression extends com.google.firebase.firestore.pipeline.Expression {
16951700
}
16961701

1697-
@com.google.common.annotations.Beta public final class Ordering {
1702+
public final class Ordering {
16981703
method public static com.google.firebase.firestore.pipeline.Ordering ascending(com.google.firebase.firestore.pipeline.Expression expr);
16991704
method public static com.google.firebase.firestore.pipeline.Ordering ascending(String fieldName);
17001705
method public static com.google.firebase.firestore.pipeline.Ordering descending(com.google.firebase.firestore.pipeline.Expression expr);
@@ -1728,7 +1733,7 @@ package com.google.firebase.firestore.pipeline {
17281733
public static final class RawOptions.Companion {
17291734
}
17301735

1731-
@com.google.common.annotations.Beta public final class RawStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.RawStage> {
1736+
public final class RawStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.RawStage> {
17321737
method public static com.google.firebase.firestore.pipeline.RawStage ofName(String name);
17331738
method public com.google.firebase.firestore.pipeline.RawStage withArguments(java.lang.Object... arguments);
17341739
field public static final com.google.firebase.firestore.pipeline.RawStage.Companion Companion;
@@ -1738,7 +1743,7 @@ package com.google.firebase.firestore.pipeline {
17381743
method public com.google.firebase.firestore.pipeline.RawStage ofName(String name);
17391744
}
17401745

1741-
@com.google.common.annotations.Beta public final class SampleStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.SampleStage> {
1746+
public final class SampleStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.SampleStage> {
17421747
method public static com.google.firebase.firestore.pipeline.SampleStage withDocLimit(int results);
17431748
method public static com.google.firebase.firestore.pipeline.SampleStage withPercentage(double percentage);
17441749
field public static final com.google.firebase.firestore.pipeline.SampleStage.Companion Companion;
@@ -1760,11 +1765,11 @@ package com.google.firebase.firestore.pipeline {
17601765
property public final error.NonExistentClass PERCENT;
17611766
}
17621767

1763-
@com.google.common.annotations.Beta public abstract class Selectable extends com.google.firebase.firestore.pipeline.Expression {
1768+
public abstract class Selectable extends com.google.firebase.firestore.pipeline.Expression {
17641769
ctor public Selectable();
17651770
}
17661771

1767-
@com.google.common.annotations.Beta public abstract sealed class Stage<T extends com.google.firebase.firestore.pipeline.Stage<T>> {
1772+
public abstract sealed class Stage<T extends com.google.firebase.firestore.pipeline.Stage<T>> {
17681773
method public final T withOption(String key, boolean value);
17691774
method public final T withOption(String key, com.google.firebase.firestore.pipeline.Field value);
17701775
method public final T withOption(String key, double value);
@@ -1773,12 +1778,12 @@ package com.google.firebase.firestore.pipeline {
17731778
method public final T withOption(String key, long value);
17741779
}
17751780

1776-
@com.google.common.annotations.Beta public final class UnnestOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.UnnestOptions> {
1781+
public final class UnnestOptions extends com.google.firebase.firestore.pipeline.AbstractOptions<com.google.firebase.firestore.pipeline.UnnestOptions> {
17771782
ctor public UnnestOptions();
17781783
method public com.google.firebase.firestore.pipeline.UnnestOptions withIndexField(String indexField);
17791784
}
17801785

1781-
@com.google.common.annotations.Beta public final class UnnestStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.UnnestStage> {
1786+
public final class UnnestStage extends com.google.firebase.firestore.pipeline.Stage<com.google.firebase.firestore.pipeline.UnnestStage> {
17821787
method public static com.google.firebase.firestore.pipeline.UnnestStage withField(com.google.firebase.firestore.pipeline.Selectable arrayWithAlias);
17831788
method public static com.google.firebase.firestore.pipeline.UnnestStage withField(String arrayField, String alias);
17841789
method public com.google.firebase.firestore.pipeline.UnnestStage withIndexField(String indexField);

0 commit comments

Comments
 (0)