@@ -33,50 +33,46 @@ enum KotlinAdapter {
3333 }
3434
3535 static func toKotlin( _ table: RawTable ) -> PowerSyncKotlin . RawTable {
36+ let translatedPut = table. put. map ( translateStatement)
37+ let translatedDelete = table. delete. map ( translateStatement)
38+
3639 if let schema = table. schema {
37- var put : PowerSyncKotlin . PendingStatement ? = nil
38- var delete : PowerSyncKotlin . PendingStatement ? = nil
39- if let definedStmt = table. put {
40- put = translateStatement ( definedStmt)
41- }
42- if let definedStmt = table. delete {
43- delete = translateStatement ( definedStmt)
44- }
45-
4640 return PowerSyncKotlin . RawTable (
4741 name: table. name,
4842 schema: translateRawTableSchema ( schema) ,
49- put: put ,
50- delete: delete ,
43+ put: translatedPut ,
44+ delete: translatedDelete ,
5145 clear: table. clear,
5246 )
5347 }
5448
49+ // If we have no schema, put and delete are required. The constructor overloads on RawTable
50+ // should ensure that, but it's better to be defensive here.
51+ guard let put = translatedPut, let delete = translatedDelete else {
52+ fatalError ( " RawTable ' \( table. name) ' has no schema and must provide both put and delete statements " )
53+ }
54+
5555 // If no schema is given, put and delete statements must be present (an invariant
5656 // matched by constructor overloads on the RawTable struct).
5757 return PowerSyncKotlin . RawTable (
5858 name: table. name,
59- put: translateStatement ( table . put! ) ,
60- delete: translateStatement ( table . delete! ) ,
59+ put: put,
60+ delete: delete,
6161 clear: table. clear
6262 ) ;
6363 }
6464
6565 private static func translateTableOptions( _ options: TableOptionsProtocol ) -> PowerSyncKotlin . TableOptions {
66- let trackPreviousKotlin : PowerSyncKotlin . TrackPreviousValuesOptions ? = if let track = options. trackPreviousValues {
67- PowerSyncKotlin . TrackPreviousValuesOptions (
68- columnFilter: track. columnFilter,
69- onlyWhenChanged: track. onlyWhenChanged
70- )
71- } else {
72- nil
73- }
74-
7566 return PowerSyncKotlin . TableOptions (
7667 localOnly: options. localOnly,
7768 insertOnly: options. insertOnly,
7869 trackMetadata: options. trackMetadata,
79- trackPreviousValues: trackPreviousKotlin,
70+ trackPreviousValues: options. trackPreviousValues. map {
71+ PowerSyncKotlin . TrackPreviousValuesOptions (
72+ columnFilter: $0. columnFilter,
73+ onlyWhenChanged: $0. onlyWhenChanged
74+ )
75+ } ,
8076 ignoreEmptyUpdates: options. ignoreEmptyUpdates,
8177 )
8278 }
0 commit comments