@@ -52,7 +52,7 @@ data class ChildEvent internal constructor(
52
52
}
53
53
}
54
54
55
- expect class NativeQuery
55
+ internal expect open class NativeQuery
56
56
57
57
expect open class Query internal constructor(nativeQuery : NativeQuery ) {
58
58
val valueEvents: Flow <DataSnapshot >
@@ -73,46 +73,52 @@ expect open class Query internal constructor(nativeQuery: NativeQuery) {
73
73
fun equalTo (value : Boolean , key : String? = null): Query
74
74
}
75
75
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())
77
96
78
97
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(value) { this.encodeDefaults = encodeDefaults }" ))
79
98
suspend inline fun <reified T > setValue (value : T ? , encodeDefaults : Boolean ) =
80
99
setValue(value) {
81
100
this .encodeDefaults = encodeDefaults
82
101
}
83
102
suspend inline fun <reified T > setValue (value : T ? , buildSettings : EncodeSettings .Builder .() -> Unit = {}) =
84
- setValueEncoded(encode(value, buildSettings))
103
+ nativeReference. setValueEncoded(encode(value, buildSettings))
85
104
86
105
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(strategy, value) { this.encodeDefaults = encodeDefaults }" ))
87
106
suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) =
88
107
setValue(strategy, value) {
89
108
this .encodeDefaults = encodeDefaults
90
109
}
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))
95
111
96
112
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" updateChildren(update) { this.encodeDefaults = encodeDefaults }" ))
97
113
suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) = updateChildren(update) {
98
114
this .encodeDefaults = encodeDefaults
99
115
}
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(
101
117
encode(update, buildSettings))
102
118
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()
112
120
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)
116
122
}
117
123
118
124
expect class DataSnapshot {
@@ -129,31 +135,30 @@ expect class DataSnapshot {
129
135
130
136
expect class DatabaseException (message : String? , cause : Throwable ? ) : RuntimeException
131
137
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()
133
149
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(value) { this.encodeDefaults = encodeDefaults }" ))
134
150
suspend inline fun <reified T > setValue (value : T ? , encodeDefaults : Boolean ) =
135
151
setValue(value) { this .encodeDefaults = encodeDefaults }
136
152
suspend inline fun <reified T > setValue (value : T ? , buildSettings : EncodeSettings .Builder .() -> Unit = {}) =
137
- setValue(encode(value, buildSettings))
153
+ native. setValue(encode(value, buildSettings))
138
154
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" setValue(strategy, value) { this.encodeDefaults = encodeDefaults }" ))
139
155
suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) =
140
156
setValue(strategy, value) { this .encodeDefaults = encodeDefaults }
141
157
suspend inline fun <T > setValue (strategy : SerializationStrategy <T >, value : T , buildSettings : EncodeSettings .Builder .() -> Unit = {}) = setValue(encode(strategy, value, buildSettings))
142
158
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) })
147
160
@Deprecated(" Deprecated. Use builder instead" , replaceWith = ReplaceWith (" updateChildren(update) { this.encodeDefaults = encodeDefaults }" ))
148
161
suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) = updateChildren(update) {
149
162
this .encodeDefaults = encodeDefaults
150
163
}
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 ()
159
164
}
0 commit comments