@@ -11,6 +11,7 @@ import kotlinx.serialization.KSerializer
1111import kotlinx.serialization.Serializable
1212import kotlinx.serialization.SerializationException
1313import kotlinx.serialization.SerializationStrategy
14+ import kotlin.jvm.JvmName
1415
1516/* * Returns the [FirebaseFirestore] instance of the default [FirebaseApp]. */
1617expect val Firebase .firestore: FirebaseFirestore
@@ -68,8 +69,8 @@ sealed class WhereClause {
6869 val safeValues get() = values.map { it.safeValue }
6970 }
7071
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()
7374 data class LessThan (override val value : Any ) : ForObject()
7475 data class GreaterThan (override val value : Any ) : ForObject()
7576 data class LessThanOrEqualTo (override val value : Any ) : ForObject()
@@ -112,6 +113,59 @@ private val Any.safeValue: Any get() = when (this) {
112113 else -> this
113114}
114115
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+
115169fun Query.orderBy (field : String , direction : Direction = Direction .ASCENDING ) = _orderBy (field, direction)
116170fun Query.orderBy (field : FieldPath , direction : Direction = Direction .ASCENDING ) = _orderBy (field, direction)
117171
0 commit comments