@@ -52,7 +52,7 @@ data class ChildEvent internal constructor(
5252 }
5353}
5454
55- expect class NativeQuery
55+ internal expect open class NativeQuery
5656
5757expect open class Query internal constructor(nativeQuery : NativeQuery ) {
5858 val valueEvents: Flow <DataSnapshot >
@@ -73,46 +73,52 @@ expect open class Query internal constructor(nativeQuery: NativeQuery) {
7373 fun equalTo (value : Boolean , key : String? = null): Query
7474}
7575
76- abstract class BaseDatabaseReference internal constructor(nativeQuery : NativeQuery ) : Query(nativeQuery) {
76+ @PublishedApi
77+ internal expect class NativeDatabaseReference : NativeQuery {
78+ val key: String?
79+ fun push (): NativeDatabaseReference
80+ suspend fun setValueEncoded (encodedValue : Any? )
81+ suspend fun updateEncodedChildren (encodedUpdate : Any? )
82+ fun child (path : String ): NativeDatabaseReference
83+ fun onDisconnect (): NativeOnDisconnect
84+
85+ suspend fun removeValue ()
86+
87+ suspend fun <T > runTransaction (strategy : KSerializer <T >, buildSettings : EncodeDecodeSettingsBuilder .() -> Unit = {}, transactionUpdate : (currentData: T ) -> T ): DataSnapshot
88+ }
89+
90+ class DatabaseReference internal constructor(@PublishedApi internal val nativeReference : NativeDatabaseReference ) : Query(nativeReference) {
91+
92+ val key: String? = nativeReference.key
93+ fun push (): DatabaseReference = DatabaseReference (nativeReference.push())
94+ fun child (path : String ): DatabaseReference = DatabaseReference (nativeReference.child(path))
95+ fun onDisconnect (): OnDisconnect = OnDisconnect (nativeReference.onDisconnect())
7796
7897 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(value) { this.encodeDefaults = encodeDefaults }" ))
7998 suspend inline fun <reified T > setValue (value : T ? , encodeDefaults : Boolean ) =
8099 setValue(value) {
81100 this .encodeDefaults = encodeDefaults
82101 }
83102 suspend inline fun <reified T > setValue (value : T ? , buildSettings : EncodeSettings .Builder .() -> Unit = {}) =
84- setValueEncoded(encode(value, buildSettings))
103+ nativeReference. setValueEncoded(encode(value, buildSettings))
85104
86105 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(strategy, value) { this.encodeDefaults = encodeDefaults }" ))
87106 suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) =
88107 setValue(strategy, value) {
89108 this .encodeDefaults = encodeDefaults
90109 }
91- suspend inline fun <T > setValue (strategy : SerializationStrategy <T >, value : T , buildSettings : EncodeSettings .Builder .() -> Unit = {}) = setValueEncoded(encode(strategy, value, buildSettings))
92-
93- @PublishedApi
94- internal abstract suspend fun setValueEncoded (encodedValue : Any? )
110+ suspend inline fun <T > setValue (strategy : SerializationStrategy <T >, value : T , buildSettings : EncodeSettings .Builder .() -> Unit = {}) = nativeReference.setValueEncoded(encode(strategy, value, buildSettings))
95111
96112 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" updateChildren(update) { this.encodeDefaults = encodeDefaults }" ))
97113 suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) = updateChildren(update) {
98114 this .encodeDefaults = encodeDefaults
99115 }
100- suspend inline fun updateChildren (update : Map <String , Any ?>, buildSettings : EncodeSettings .Builder .() -> Unit = {}) = updateEncodedChildren(
116+ suspend inline fun updateChildren (update : Map <String , Any ?>, buildSettings : EncodeSettings .Builder .() -> Unit = {}) = nativeReference. updateEncodedChildren(
101117 encode(update, buildSettings))
102118
103- @PublishedApi
104- internal abstract suspend fun updateEncodedChildren (encodedUpdate : Any? )
105- }
106-
107- expect class DatabaseReference : BaseDatabaseReference {
108- val key: String?
109- fun push (): DatabaseReference
110- fun child (path : String ): DatabaseReference
111- fun onDisconnect (): OnDisconnect
119+ suspend fun removeValue () = nativeReference.removeValue()
112120
113- suspend fun removeValue ()
114-
115- suspend fun <T > runTransaction (strategy : KSerializer <T >, buildSettings : EncodeDecodeSettingsBuilder .() -> Unit = {}, transactionUpdate : (currentData: T ) -> T ): DataSnapshot
121+ suspend fun <T > runTransaction (strategy : KSerializer <T >, buildSettings : EncodeDecodeSettingsBuilder .() -> Unit = {}, transactionUpdate : (currentData: T ) -> T ): DataSnapshot = nativeReference.runTransaction(strategy, buildSettings, transactionUpdate)
116122}
117123
118124expect class DataSnapshot {
@@ -129,31 +135,30 @@ expect class DataSnapshot {
129135
130136expect class DatabaseException (message : String? , cause : Throwable ? ) : RuntimeException
131137
132- abstract class BaseOnDisconnect internal constructor() {
138+ @PublishedApi
139+ internal expect class NativeOnDisconnect {
140+ suspend fun removeValue ()
141+ suspend fun cancel ()
142+ suspend fun setValue (encodedValue : Any? )
143+ suspend fun updateEncodedChildren (encodedUpdate : Map <String , Any ?>)
144+ }
145+
146+ class OnDisconnect internal constructor(@PublishedApi internal val native : NativeOnDisconnect ) {
147+ suspend fun removeValue () = native.removeValue()
148+ suspend fun cancel () = native.cancel()
133149 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(value) { this.encodeDefaults = encodeDefaults }" ))
134150 suspend inline fun <reified T > setValue (value : T ? , encodeDefaults : Boolean ) =
135151 setValue(value) { this .encodeDefaults = encodeDefaults }
136152 suspend inline fun <reified T > setValue (value : T ? , buildSettings : EncodeSettings .Builder .() -> Unit = {}) =
137- setValue(encode(value, buildSettings))
153+ native. setValue(encode(value, buildSettings))
138154 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(strategy, value) { this.encodeDefaults = encodeDefaults }" ))
139155 suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) =
140156 setValue(strategy, value) { this .encodeDefaults = encodeDefaults }
141157 suspend inline fun <T > setValue (strategy : SerializationStrategy <T >, value : T , buildSettings : EncodeSettings .Builder .() -> Unit = {}) = setValue(encode(strategy, value, buildSettings))
142158
143- @PublishedApi
144- internal abstract suspend fun setValue (encodedValue : Any? )
145-
146- suspend inline fun updateChildren (update : Map <String , Any ?>, buildSettings : EncodeSettings .Builder .() -> Unit = {}) = updateEncodedChildren(update.mapValues { (_, it) -> encode(it, buildSettings) })
159+ suspend inline fun updateChildren (update : Map <String , Any ?>, buildSettings : EncodeSettings .Builder .() -> Unit = {}) = native.updateEncodedChildren(update.mapValues { (_, it) -> encode(it, buildSettings) })
147160 @Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" updateChildren(update) { this.encodeDefaults = encodeDefaults }" ))
148161 suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) = updateChildren(update) {
149162 this .encodeDefaults = encodeDefaults
150163 }
151-
152- @PublishedApi
153- internal abstract suspend fun updateEncodedChildren (encodedUpdate : Map <String , Any ?>)
154- }
155-
156- expect class OnDisconnect : BaseOnDisconnect {
157- suspend fun removeValue ()
158- suspend fun cancel ()
159164}
0 commit comments