@@ -11,6 +11,7 @@ import kotlinx.serialization.KSerializer
11
11
import kotlinx.serialization.Serializable
12
12
import kotlinx.serialization.SerializationException
13
13
import kotlinx.serialization.SerializationStrategy
14
+ import kotlin.jvm.JvmName
14
15
15
16
/* * Returns the [FirebaseFirestore] instance of the default [FirebaseApp]. */
16
17
expect val Firebase .firestore: FirebaseFirestore
@@ -68,8 +69,8 @@ sealed class WhereClause {
68
69
val safeValues get() = values.map { it.safeValue }
69
70
}
70
71
71
- data class EqualTo (override val value : Any ) : ForNullableObject()
72
- data class NotEqualTo (override val value : Any ) : ForNullableObject()
72
+ data class EqualTo (override val value : Any? ) : ForNullableObject()
73
+ data class NotEqualTo (override val value : Any? ) : ForNullableObject()
73
74
data class LessThan (override val value : Any ) : ForObject()
74
75
data class GreaterThan (override val value : Any ) : ForObject()
75
76
data class LessThanOrEqualTo (override val value : Any ) : ForObject()
@@ -112,6 +113,59 @@ private val Any.safeValue: Any get() = when (this) {
112
113
else -> this
113
114
}
114
115
116
+ fun Query.where (field : String , equalTo : Any? ) = where(field, WhereClause .EqualTo (equalTo))
117
+ fun Query.where (path : FieldPath , equalTo : Any? ) = where(path, WhereClause .EqualTo (equalTo))
118
+ fun Query.whereNot (field : String , notEqualTo : Any? ) = where(field, WhereClause .NotEqualTo (notEqualTo))
119
+ fun Query.whereNot (path : FieldPath , notEqualTo : Any? ) = where(path, WhereClause .NotEqualTo (notEqualTo))
120
+ fun Query.where (field : String ,
121
+ lessThan : Any? = null,
122
+ greaterThan : Any? = null,
123
+ lessThanOrEqualTo : Any? = null,
124
+ greaterThanOrEqualTo : Any? = null,
125
+ arrayContains : Any? = null,
126
+ arrayContainsAny : List <Any >? = null,
127
+ inArray : List <Any >? = null,
128
+ notInArray : List <Any >? = null,
129
+ ) =
130
+ where(
131
+ field,
132
+ listOfNotNull(
133
+ lessThan?.let { WhereClause .LessThan (it) },
134
+ greaterThan?.let { WhereClause .GreaterThan (it) },
135
+ lessThanOrEqualTo?.let { WhereClause .LessThanOrEqualTo (it) },
136
+ greaterThanOrEqualTo?.let { WhereClause .GreaterThanOrEqualTo (it) },
137
+ arrayContains?.let { WhereClause .ArrayContains (it) },
138
+ arrayContainsAny?.let { WhereClause .ArrayContainsAny (it) },
139
+ inArray?.let { WhereClause .InArray (it) },
140
+ notInArray?.let { WhereClause .NotInArray (it) }
141
+ )
142
+ )
143
+
144
+ fun Query.where (path : FieldPath ,
145
+ lessThan : Any? = null,
146
+ greaterThan : Any? = null,
147
+ lessThanOrEqualTo : Any? = null,
148
+ greaterThanOrEqualTo : Any? = null,
149
+ arrayContains : Any? = null,
150
+ arrayContainsAny : List <Any >? = null,
151
+ inArray : List <Any >? = null,
152
+ notInArray : List <Any >? = null,
153
+ ) =
154
+ where(
155
+ path,
156
+ listOfNotNull(
157
+ lessThan?.let { WhereClause .LessThan (it) },
158
+ greaterThan?.let { WhereClause .GreaterThan (it) },
159
+ lessThanOrEqualTo?.let { WhereClause .LessThanOrEqualTo (it) },
160
+ greaterThanOrEqualTo?.let { WhereClause .GreaterThanOrEqualTo (it) },
161
+ arrayContains?.let { WhereClause .ArrayContains (it) },
162
+ arrayContainsAny?.let { WhereClause .ArrayContainsAny (it) },
163
+ inArray?.let { WhereClause .InArray (it) },
164
+ notInArray?.let { WhereClause .NotInArray (it) }
165
+ )
166
+ )
167
+
168
+
115
169
fun Query.orderBy (field : String , direction : Direction = Direction .ASCENDING ) = _orderBy (field, direction)
116
170
fun Query.orderBy (field : FieldPath , direction : Direction = Direction .ASCENDING ) = _orderBy (field, direction)
117
171
0 commit comments