diff --git a/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt b/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt index 72a942353..ae842632b 100644 --- a/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt +++ b/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt @@ -284,7 +284,12 @@ external object firebase { fun once(eventType: String, callback: SnapshotCallback, failureCallbackOrContext: (error: Error) -> Unit? = definedExternally, context: Any? = definedExternally): SnapshotCallback fun orderByChild(path: String): Query fun orderByKey(): Query + fun orderByValue(): Query fun startAt(value: Any, key: String? = definedExternally): Query + fun endAt(value: Any, key: String? = definedExternally): Query + fun equalTo(value: Any, key: String? = definedExternally): Query + fun limitToFirst(limit: Int): Query + fun limitToLast (limit: Int): Query } open class Reference: Query { diff --git a/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt index 6a4dfa7b1..bf158cf72 100644 --- a/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -81,6 +81,8 @@ actual open class Query internal constructor( ) { actual fun orderByKey() = Query(android.orderByKey(), persistenceEnabled) + actual fun orderByValue() = Query(android.orderByValue(), persistenceEnabled) + actual fun orderByChild(path: String) = Query(android.orderByChild(path), persistenceEnabled) actual fun startAt(value: String, key: String?) = Query(android.startAt(value, key), persistenceEnabled) @@ -89,6 +91,22 @@ actual open class Query internal constructor( actual fun startAt(value: Boolean, key: String?) = Query(android.startAt(value, key), persistenceEnabled) + actual fun endAt(value: String, key: String?) = Query(android.endAt(value, key), persistenceEnabled) + + actual fun endAt(value: Double, key: String?) = Query(android.endAt(value, key), persistenceEnabled) + + actual fun endAt(value: Boolean, key: String?) = Query(android.endAt(value, key), persistenceEnabled) + + actual fun limitToFirst(limit: Int) = Query(android.limitToFirst(limit), persistenceEnabled) + + actual fun limitToLast(limit: Int) = Query(android.limitToLast(limit), persistenceEnabled) + + actual fun equalTo(value: String, key: String?) = Query(android.equalTo(value, key), persistenceEnabled) + + actual fun equalTo(value: Double, key: String?) = Query(android.equalTo(value, key), persistenceEnabled) + + actual fun equalTo(value: Boolean, key: String?) = Query(android.equalTo(value, key), persistenceEnabled) + actual val valueEvents: Flow get() = callbackFlow { val listener = object : ValueEventListener { diff --git a/firebase-database/src/commonMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/commonMain/kotlin/dev/gitlive/firebase/database/database.kt index d631459ce..49c5c62a7 100644 --- a/firebase-database/src/commonMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/commonMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -46,10 +46,19 @@ expect open class Query { val valueEvents: Flow fun childEvents(vararg types: ChildEvent.Type = arrayOf(ADDED, CHANGED, MOVED, REMOVED)): Flow fun orderByKey(): Query + fun orderByValue(): Query fun orderByChild(path: String): Query fun startAt(value: String, key: String? = null): Query fun startAt(value: Double, key: String? = null): Query fun startAt(value: Boolean, key: String? = null): Query + fun endAt(value: String, key: String? = null): Query + fun endAt(value: Double, key: String? = null): Query + fun endAt(value: Boolean, key: String? = null): Query + fun limitToFirst(limit: Int): Query + fun limitToLast(limit: Int): Query + fun equalTo(value: String, key: String? = null): Query + fun equalTo(value: Double, key: String? = null): Query + fun equalTo(value: Boolean, key: String? = null): Query } expect class DatabaseReference : Query { diff --git a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt index a02ac60be..068959dfe 100644 --- a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -72,6 +72,8 @@ actual open class Query internal constructor( ) { actual fun orderByKey() = Query(ios.queryOrderedByKey(), persistenceEnabled) + actual fun orderByValue() = Query(ios.queryOrderedByValue(), persistenceEnabled) + actual fun orderByChild(path: String) = Query(ios.queryOrderedByChild(path), persistenceEnabled) actual fun startAt(value: String, key: String?) = Query(ios.queryStartingAtValue(value, key), persistenceEnabled) @@ -80,6 +82,22 @@ actual open class Query internal constructor( actual fun startAt(value: Boolean, key: String?) = Query(ios.queryStartingAtValue(value, key), persistenceEnabled) + actual fun endAt(value: String, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled) + + actual fun endAt(value: Double, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled) + + actual fun endAt(value: Boolean, key: String?) = Query(ios.queryEndingAtValue(value, key), persistenceEnabled) + + actual fun limitToFirst(limit: Int) = Query(ios.queryLimitedToFirst(limit.toULong()), persistenceEnabled) + + actual fun limitToLast(limit: Int) = Query(ios.queryLimitedToLast(limit.toULong()), persistenceEnabled) + + actual fun equalTo(value: String, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled) + + actual fun equalTo(value: Double, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled) + + actual fun equalTo(value: Boolean, key: String?) = Query(ios.queryEqualToValue(value, key), persistenceEnabled) + actual val valueEvents get() = callbackFlow { val handle = ios.observeEventType( FIRDataEventTypeValue, diff --git a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt index 3e623d283..afcdb9bde 100644 --- a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -40,6 +40,7 @@ actual class FirebaseDatabase internal constructor(val js: firebase.database.Dat actual open class Query internal constructor(open val js: firebase.database.Query) { actual fun orderByKey() = Query(js.orderByKey()) + actual fun orderByValue() = Query(js.orderByValue()) actual fun orderByChild(path: String) = Query(js.orderByChild(path)) actual val valueEvents get() = callbackFlow { @@ -82,6 +83,22 @@ actual open class Query internal constructor(open val js: firebase.database.Quer actual fun startAt(value: Boolean, key: String?) = Query(js.startAt(value, key ?: undefined)) + actual fun endAt(value: String, key: String?) = Query(js.endAt(value, key ?: undefined)) + + actual fun endAt(value: Double, key: String?) = Query(js.endAt(value, key ?: undefined)) + + actual fun endAt(value: Boolean, key: String?) = Query(js.endAt(value, key ?: undefined)) + + actual fun limitToFirst(limit: Int) = Query(js.limitToFirst(limit)) + + actual fun limitToLast(limit: Int) = Query(js.limitToLast(limit)) + + actual fun equalTo(value: String, key: String?) = Query(js.equalTo(value, key ?: undefined)) + + actual fun equalTo(value: Double, key: String?) = Query(js.equalTo(value, key ?: undefined)) + + actual fun equalTo(value: Boolean, key: String?) = Query(js.equalTo(value, key ?: undefined)) + override fun toString() = js.toString() }