Skip to content

Commit 0272e2b

Browse files
add startAfter, startAt, endBefore, endAt for snapshot and fieldValues
1 parent 0c421e0 commit 0272e2b

File tree

5 files changed

+54
-3
lines changed
  • firebase-common/src/jsMain/kotlin/dev/gitlive/firebase
  • firebase-firestore/src

5 files changed

+54
-3
lines changed

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,13 @@ external object firebase {
381381
fun orderBy(field: String, direction: Any): Query
382382
fun orderBy(field: FieldPath, direction: Any): Query
383383
fun startAfter(document: DocumentSnapshot): Query
384+
fun startAfter(vararg fieldValues: Any): Query
385+
fun startAt(document: DocumentSnapshot): Query
386+
fun startAt(vararg fieldValues: Any): Query
387+
fun endBefore(document: DocumentSnapshot): Query
388+
fun endBefore(vararg fieldValues: Any): Query
389+
fun endAt(document: DocumentSnapshot): Query
390+
fun endAt(vararg fieldValues: Any): Query
384391
}
385392

386393
open class CollectionReference : Query {

firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,14 @@ actual open class Query(open val android: com.google.firebase.firestore.Query) {
369369
internal actual fun _orderBy(field: FieldPath, direction: Direction) = Query(android.orderBy(field.android, direction))
370370

371371
internal actual fun _startAfter(document: DocumentSnapshot) = Query(android.startAfter(document.android))
372+
internal actual fun _startAfter(vararg fieldValues: Any) = Query(android.startAfter(*fieldValues))
373+
internal actual fun _startAt(document: DocumentSnapshot) = Query(android.startAt(document.android))
374+
internal actual fun _startAt(vararg fieldValues: Any) = Query(android.startAt(*fieldValues))
375+
376+
internal actual fun _endBefore(document: DocumentSnapshot) = Query(android.endBefore(document.android))
377+
internal actual fun _endBefore(vararg fieldValues: Any) = Query(android.endBefore(*fieldValues))
378+
internal actual fun _endAt(document: DocumentSnapshot) = Query(android.endAt(document.android))
379+
internal actual fun _endAt(vararg fieldValues: Any) = Query(android.endAt(*fieldValues))
372380
}
373381

374382
actual typealias Direction = com.google.firebase.firestore.Query.Direction

firebase-firestore/src/commonMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,14 @@ expect open class Query {
7070
internal fun _orderBy(field: FieldPath, direction: Direction): Query
7171

7272
internal fun _startAfter(document: DocumentSnapshot): Query
73+
internal fun _startAfter(vararg fieldValues: Any): Query
74+
internal fun _startAt(document: DocumentSnapshot): Query
75+
internal fun _startAt(vararg fieldValues: Any): Query
76+
77+
internal fun _endBefore(document: DocumentSnapshot): Query
78+
internal fun _endBefore(vararg fieldValues: Any): Query
79+
internal fun _endAt(document: DocumentSnapshot): Query
80+
internal fun _endAt(vararg fieldValues: Any): Query
7381
}
7482

7583
fun Query.where(field: String, equalTo: Any?) = _where(field, equalTo)
@@ -85,6 +93,14 @@ fun Query.orderBy(field: String, direction: Direction = Direction.ASCENDING) = _
8593
fun Query.orderBy(field: FieldPath, direction: Direction = Direction.ASCENDING) = _orderBy(field, direction)
8694

8795
fun Query.startAfter(document: DocumentSnapshot) = _startAfter(document)
96+
fun Query.startAfter(vararg fieldValues: Any) = _startAfter(fieldValues)
97+
fun Query.startAt(document: DocumentSnapshot) = _startAfter(document)
98+
fun Query.startAt(vararg fieldValues: Any) = _startAfter(fieldValues)
99+
100+
fun Query.endBefore(document: DocumentSnapshot) = _startAfter(document)
101+
fun Query.endBefore(vararg fieldValues: Any) = _startAfter(fieldValues)
102+
fun Query.endAt(document: DocumentSnapshot) = _startAfter(document)
103+
fun Query.endAt(vararg fieldValues: Any) = _startAfter(fieldValues)
88104

89105
expect class WriteBatch {
90106
inline fun <reified T> set(documentRef: DocumentReference, data: T, encodeDefaults: Boolean = true, merge: Boolean = false): WriteBatch

firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,14 @@ actual open class Query(open val ios: FIRQuery) {
284284
internal actual fun _orderBy(field: FieldPath, direction: Direction) = Query(ios.queryOrderedByFieldPath(field.ios, direction == Direction.DESCENDING))
285285

286286
internal actual fun _startAfter(document: DocumentSnapshot) = Query(ios.queryStartingAfterDocument(document.ios))
287+
internal actual fun _startAfter(vararg fieldValues: Any) = Query(ios.queryStartingAfterValues(fieldValues))
288+
internal actual fun _startAt(document: DocumentSnapshot) = Query(ios.queryStartingAtDocument(document.ios))
289+
internal actual fun _startAt(vararg fieldValues: Any) = Query(ios.queryStartingAtValues(fieldValues))
290+
291+
internal actual fun _endBefore(document: DocumentSnapshot) = Query(ios.queryEndingBeforeDocument(document.ios))
292+
internal actual fun _endBefore(vararg fieldValues: Any) = Query(ios.queryEndingBeforeValues(fieldValues))
293+
internal actual fun _endAt(document: DocumentSnapshot) = Query(ios.queryEndingAtDocument(document.ios))
294+
internal actual fun _endAt(vararg fieldValues: Any) = Query(ios.queryEndingAtValues(fieldValues))
287295

288296
}
289297
@Suppress("UNCHECKED_CAST")

firebase-firestore/src/jsMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,21 @@ actual open class Query(open val js: firebase.firestore.Query) {
332332
Query(js.orderBy(field.js, direction.jsString))
333333
}
334334

335-
internal actual fun _startAfter(document: DocumentSnapshot) = rethrow {
336-
Query(js.startAfter(document.js))
337-
}
335+
internal actual fun _startAfter(document: DocumentSnapshot) = rethrow { Query(js.startAfter(document.js)) }
336+
337+
internal actual fun _startAfter(vararg fieldValues: Any) = rethrow { Query(js.startAfter(*fieldValues)) }
338+
339+
internal actual fun _startAt(document: DocumentSnapshot) = rethrow { Query(js.startAt(document.js)) }
340+
341+
internal actual fun _startAt(vararg fieldValues: Any) = rethrow { Query(js.startAt(*fieldValues)) }
342+
343+
internal actual fun _endBefore(document: DocumentSnapshot) = rethrow { Query(js.endBefore(document.js)) }
344+
345+
internal actual fun _endBefore(vararg fieldValues: Any) = rethrow { Query(js.endBefore(*fieldValues)) }
346+
347+
internal actual fun _endAt(document: DocumentSnapshot) = rethrow { Query(js.endAt(document.js)) }
348+
349+
internal actual fun _endAt(vararg fieldValues: Any) = rethrow { Query(js.endAt(*fieldValues)) }
338350

339351
actual val snapshots get() = callbackFlow<QuerySnapshot> {
340352
val unsubscribe = rethrow {

0 commit comments

Comments
 (0)