@@ -2,26 +2,30 @@ import Foundation
2
2
import PowerSync
3
3
4
4
final class KotlinPowerSyncDatabaseImpl : PowerSyncDatabaseProtocol {
5
- private let kmpDatabase : PowerSync . PowerSyncDatabase
5
+ private let kotlinDatabase : PowerSync . PowerSyncDatabase
6
6
7
7
var currentStatus : SyncStatus {
8
- get { kmpDatabase . currentStatus }
8
+ get { kotlinDatabase . currentStatus }
9
9
}
10
10
11
11
init (
12
12
schema: Schema ,
13
13
dbFilename: String
14
14
) {
15
15
let factory = PowerSync . DatabaseDriverFactory ( )
16
- self . kmpDatabase = PowerSyncDatabase (
16
+ self . kotlinDatabase = PowerSyncDatabase (
17
17
factory: factory,
18
18
schema: KotlinAdapter . Schema. toKotlin ( schema) ,
19
19
dbFilename: dbFilename
20
20
)
21
21
}
22
-
22
+
23
+ init ( kotlinDatabase: KotlinPowerSyncDatabase ) {
24
+ self . kotlinDatabase = kotlinDatabase
25
+ }
26
+
23
27
func waitForFirstSync( ) async throws {
24
- try await kmpDatabase . waitForFirstSync ( )
28
+ try await kotlinDatabase . waitForFirstSync ( )
25
29
}
26
30
27
31
func connect(
@@ -30,44 +34,46 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
30
34
retryDelayMs: Int64 = 5000 ,
31
35
params: [ String : JsonParam ? ] = [ : ]
32
36
) async throws {
33
- try await kmpDatabase. connect (
34
- connector: connector,
37
+ let connectorProxy = PowerSyncBackendConnectorAdapter ( swiftBackendConnector: connector)
38
+
39
+ try await kotlinDatabase. connect (
40
+ connector: connectorProxy,
35
41
crudThrottleMs: crudThrottleMs,
36
42
retryDelayMs: retryDelayMs,
37
43
params: params
38
44
)
39
45
}
40
46
41
47
func getCrudBatch( limit: Int32 = 100 ) async throws -> CrudBatch ? {
42
- try await kmpDatabase . getCrudBatch ( limit: limit)
48
+ try await kotlinDatabase . getCrudBatch ( limit: limit)
43
49
}
44
50
45
51
func getNextCrudTransaction( ) async throws -> CrudTransaction ? {
46
- try await kmpDatabase . getNextCrudTransaction ( )
52
+ try await kotlinDatabase . getNextCrudTransaction ( )
47
53
}
48
54
49
55
func getPowerSyncVersion( ) async throws -> String {
50
- try await kmpDatabase . getPowerSyncVersion ( )
56
+ try await kotlinDatabase . getPowerSyncVersion ( )
51
57
}
52
58
53
59
func disconnect( ) async throws {
54
- try await kmpDatabase . disconnect ( )
60
+ try await kotlinDatabase . disconnect ( )
55
61
}
56
62
57
63
func disconnectAndClear( clearLocal: Bool = true ) async throws {
58
- try await kmpDatabase . disconnectAndClear ( clearLocal: clearLocal)
64
+ try await kotlinDatabase . disconnectAndClear ( clearLocal: clearLocal)
59
65
}
60
66
61
67
func execute( sql: String , parameters: [ Any ] ? ) async throws -> Int64 {
62
- Int64 ( truncating: try await kmpDatabase . execute ( sql: sql, parameters: parameters) )
68
+ Int64 ( truncating: try await kotlinDatabase . execute ( sql: sql, parameters: parameters) )
63
69
}
64
70
65
71
func get< RowType> (
66
72
sql: String ,
67
73
parameters: [ Any ] ? ,
68
74
mapper: @escaping ( SqlCursor ) -> RowType
69
75
) async throws -> RowType {
70
- try await kmpDatabase . get (
76
+ try await kotlinDatabase . get (
71
77
sql: sql,
72
78
parameters: parameters,
73
79
mapper: mapper
@@ -79,7 +85,7 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
79
85
parameters: [ Any ] ? ,
80
86
mapper: @escaping ( SqlCursor ) -> RowType
81
87
) async throws -> [ RowType ] {
82
- try await kmpDatabase . getAll (
88
+ try await kotlinDatabase . getAll (
83
89
sql: sql,
84
90
parameters: parameters,
85
91
mapper: mapper
@@ -91,7 +97,7 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
91
97
parameters: [ Any ] ? ,
92
98
mapper: @escaping ( SqlCursor ) -> RowType
93
99
) async throws -> RowType ? {
94
- try await kmpDatabase . getOptional (
100
+ try await kotlinDatabase . getOptional (
95
101
sql: sql,
96
102
parameters: parameters,
97
103
mapper: mapper
@@ -105,7 +111,7 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
105
111
) -> AsyncStream < [ RowType ] > {
106
112
AsyncStream { continuation in
107
113
Task {
108
- for await values in self . kmpDatabase . watch (
114
+ for await values in self . kotlinDatabase . watch (
109
115
sql: sql,
110
116
parameters: parameters,
111
117
mapper: mapper
@@ -118,29 +124,29 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
118
124
}
119
125
120
126
func writeTransaction< R> ( callback: @escaping ( any PowerSyncTransactionProtocol ) async throws -> R ) async throws -> R {
121
- let wrappedCallback = SuspendTaskWrapper { [ kmpDatabase ] in
127
+ let wrappedCallback = SuspendTaskWrapper { [ kotlinDatabase ] in
122
128
// Create a wrapper that converts the KMP transaction to our Swift protocol
123
- if let kmpTransaction = kmpDatabase as? PowerSyncTransactionProtocol {
129
+ if let kmpTransaction = kotlinDatabase as? PowerSyncTransactionProtocol {
124
130
return try await callback ( kmpTransaction)
125
131
} else {
126
132
throw PowerSyncError . invalidTransaction
127
133
}
128
134
}
129
135
130
- return try await kmpDatabase . writeTransaction ( callback: wrappedCallback) as! R
136
+ return try await kotlinDatabase . writeTransaction ( callback: wrappedCallback) as! R
131
137
}
132
138
133
139
func readTransaction< R> ( callback: @escaping ( any PowerSyncTransactionProtocol ) async throws -> R ) async throws -> R {
134
- let wrappedCallback = SuspendTaskWrapper { [ kmpDatabase ] in
140
+ let wrappedCallback = SuspendTaskWrapper { [ kotlinDatabase ] in
135
141
// Create a wrapper that converts the KMP transaction to our Swift protocol
136
- if let kmpTransaction = kmpDatabase as? PowerSyncTransactionProtocol {
142
+ if let kmpTransaction = kotlinDatabase as? PowerSyncTransactionProtocol {
137
143
return try await callback ( kmpTransaction)
138
144
} else {
139
145
throw PowerSyncError . invalidTransaction
140
146
}
141
147
}
142
148
143
- return try await kmpDatabase . readTransaction ( callback: wrappedCallback) as! R
149
+ return try await kotlinDatabase . readTransaction ( callback: wrappedCallback) as! R
144
150
}
145
151
}
146
152
@@ -156,7 +162,7 @@ class SuspendTaskWrapper: KotlinSuspendFunction1 {
156
162
}
157
163
158
164
@MainActor
159
- func invoke ( p1: Any ? , completionHandler: @escaping ( Any ? , Error ? ) -> Void ) {
165
+ func __invoke ( p1: Any ? , completionHandler: @escaping ( Any ? , Error ? ) -> Void ) {
160
166
Task {
161
167
do {
162
168
let result = try await self . handle ( )
0 commit comments