Skip to content

Commit c403f79

Browse files
committed
Review feedback
1 parent f7fade3 commit c403f79

1 file changed

Lines changed: 19 additions & 23 deletions

File tree

Sources/PowerSync/Kotlin/KotlinAdapter.swift

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)