Skip to content

Commit 061ef51

Browse files
authored
add orderByValue, endAt, limitToFirst, limitToLast, equalTo to Query (#129)
* add orderByValue, endAt, limitToFirst, limitToLast, equalTo to Query * add toULong() for ios
1 parent 9792b74 commit 061ef51

File tree

5 files changed

+67
-0
lines changed
  • firebase-common/src/jsMain/kotlin/dev/gitlive/firebase
  • firebase-database/src
    • androidMain/kotlin/dev/gitlive/firebase/database
    • commonMain/kotlin/dev/gitlive/firebase/database
    • iosMain/kotlin/dev/gitlive/firebase/database
    • jsMain/kotlin/dev/gitlive/firebase/database

5 files changed

+67
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,12 @@ external object firebase {
284284
fun once(eventType: String, callback: SnapshotCallback, failureCallbackOrContext: (error: Error) -> Unit? = definedExternally, context: Any? = definedExternally): SnapshotCallback
285285
fun orderByChild(path: String): Query
286286
fun orderByKey(): Query
287+
fun orderByValue(): Query
287288
fun startAt(value: Any, key: String? = definedExternally): Query
289+
fun endAt(value: Any, key: String? = definedExternally): Query
290+
fun equalTo(value: Any, key: String? = definedExternally): Query
291+
fun limitToFirst(limit: Int): Query
292+
fun limitToLast (limit: Int): Query
288293
}
289294

290295
open class Reference: Query {

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ actual open class Query internal constructor(
8181
) {
8282
actual fun orderByKey() = Query(android.orderByKey(), persistenceEnabled)
8383

84+
actual fun orderByValue() = Query(android.orderByValue(), persistenceEnabled)
85+
8486
actual fun orderByChild(path: String) = Query(android.orderByChild(path), persistenceEnabled)
8587

8688
actual fun startAt(value: String, key: String?) = Query(android.startAt(value, key), persistenceEnabled)
@@ -89,6 +91,22 @@ actual open class Query internal constructor(
8991

9092
actual fun startAt(value: Boolean, key: String?) = Query(android.startAt(value, key), persistenceEnabled)
9193

94+
actual fun endAt(value: String, key: String?) = Query(android.endAt(value, key), persistenceEnabled)
95+
96+
actual fun endAt(value: Double, key: String?) = Query(android.endAt(value, key), persistenceEnabled)
97+
98+
actual fun endAt(value: Boolean, key: String?) = Query(android.endAt(value, key), persistenceEnabled)
99+
100+
actual fun limitToFirst(limit: Int) = Query(android.limitToFirst(limit), persistenceEnabled)
101+
102+
actual fun limitToLast(limit: Int) = Query(android.limitToLast(limit), persistenceEnabled)
103+
104+
actual fun equalTo(value: String, key: String?) = Query(android.equalTo(value, key), persistenceEnabled)
105+
106+
actual fun equalTo(value: Double, key: String?) = Query(android.equalTo(value, key), persistenceEnabled)
107+
108+
actual fun equalTo(value: Boolean, key: String?) = Query(android.equalTo(value, key), persistenceEnabled)
109+
92110
actual val valueEvents: Flow<DataSnapshot>
93111
get() = callbackFlow {
94112
val listener = object : ValueEventListener {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,19 @@ expect open class Query {
4646
val valueEvents: Flow<DataSnapshot>
4747
fun childEvents(vararg types: ChildEvent.Type = arrayOf(ADDED, CHANGED, MOVED, REMOVED)): Flow<ChildEvent>
4848
fun orderByKey(): Query
49+
fun orderByValue(): Query
4950
fun orderByChild(path: String): Query
5051
fun startAt(value: String, key: String? = null): Query
5152
fun startAt(value: Double, key: String? = null): Query
5253
fun startAt(value: Boolean, key: String? = null): Query
54+
fun endAt(value: String, key: String? = null): Query
55+
fun endAt(value: Double, key: String? = null): Query
56+
fun endAt(value: Boolean, key: String? = null): Query
57+
fun limitToFirst(limit: Int): Query
58+
fun limitToLast(limit: Int): Query
59+
fun equalTo(value: String, key: String? = null): Query
60+
fun equalTo(value: Double, key: String? = null): Query
61+
fun equalTo(value: Boolean, key: String? = null): Query
5362
}
5463

5564
expect class DatabaseReference : Query {

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ actual open class Query internal constructor(
7272
) {
7373
actual fun orderByKey() = Query(ios.queryOrderedByKey(), persistenceEnabled)
7474

75+
actual fun orderByValue() = Query(ios.queryOrderedByValue(), persistenceEnabled)
76+
7577
actual fun orderByChild(path: String) = Query(ios.queryOrderedByChild(path), persistenceEnabled)
7678

7779
actual fun startAt(value: String, key: String?) = Query(ios.queryStartingAtValue(value, key), persistenceEnabled)
@@ -80,6 +82,22 @@ actual open class Query internal constructor(
8082

8183
actual fun startAt(value: Boolean, key: String?) = Query(ios.queryStartingAtValue(value, key), persistenceEnabled)
8284

85+
actual fun endAt(value: String, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled)
86+
87+
actual fun endAt(value: Double, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled)
88+
89+
actual fun endAt(value: Boolean, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled)
90+
91+
actual fun limitToFirst(limit: Int) = Query(ios.queryLimitedToFirst(limit.toULong()), persistenceEnabled)
92+
93+
actual fun limitToLast(limit: Int) = Query(ios.queryLimitedToLast(limit.toULong()), persistenceEnabled)
94+
95+
actual fun equalTo(value: String, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled)
96+
97+
actual fun equalTo(value: Double, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled)
98+
99+
actual fun equalTo(value: Boolean, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled)
100+
83101
actual val valueEvents get() = callbackFlow<DataSnapshot> {
84102
val handle = ios.observeEventType(
85103
FIRDataEventTypeValue,

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ actual class FirebaseDatabase internal constructor(val js: firebase.database.Dat
4040
actual open class Query internal constructor(open val js: firebase.database.Query) {
4141

4242
actual fun orderByKey() = Query(js.orderByKey())
43+
actual fun orderByValue() = Query(js.orderByValue())
4344
actual fun orderByChild(path: String) = Query(js.orderByChild(path))
4445

4546
actual val valueEvents get() = callbackFlow<DataSnapshot> {
@@ -82,6 +83,22 @@ actual open class Query internal constructor(open val js: firebase.database.Quer
8283

8384
actual fun startAt(value: Boolean, key: String?) = Query(js.startAt(value, key ?: undefined))
8485

86+
actual fun endAt(value: String, key: String?) = Query(js.endAt(value, key ?: undefined))
87+
88+
actual fun endAt(value: Double, key: String?) = Query(js.endAt(value, key ?: undefined))
89+
90+
actual fun endAt(value: Boolean, key: String?) = Query(js.endAt(value, key ?: undefined))
91+
92+
actual fun limitToFirst(limit: Int) = Query(js.limitToFirst(limit))
93+
94+
actual fun limitToLast(limit: Int) = Query(js.limitToLast(limit))
95+
96+
actual fun equalTo(value: String, key: String?) = Query(js.equalTo(value, key ?: undefined))
97+
98+
actual fun equalTo(value: Double, key: String?) = Query(js.equalTo(value, key ?: undefined))
99+
100+
actual fun equalTo(value: Boolean, key: String?) = Query(js.equalTo(value, key ?: undefined))
101+
85102
override fun toString() = js.toString()
86103

87104
}

0 commit comments

Comments
 (0)