File tree Expand file tree Collapse file tree 2 files changed +48
-14
lines changed
core/src/commonMain/kotlin/com/powersync/db Expand file tree Collapse file tree 2 files changed +48
-14
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ import com.powersync.db.crud.CrudRow
14
14
import com.powersync.db.crud.CrudTransaction
15
15
import com.powersync.db.internal.InternalDatabaseImpl
16
16
import com.powersync.db.internal.InternalTable
17
+ import com.powersync.db.internal.PowerSyncVersion
17
18
import com.powersync.db.schema.Schema
18
19
import com.powersync.db.schema.toSerializable
19
20
import com.powersync.sync.PriorityStatusEntry
@@ -461,20 +462,9 @@ internal class PowerSyncDatabaseImpl(
461
462
* Check that a supported version of the powersync extension is loaded.
462
463
*/
463
464
private fun checkVersion (powerSyncVersion : String ) {
464
- // Parse version
465
- val versionInts: List <Int > =
466
- try {
467
- powerSyncVersion
468
- .split(Regex (" [./]" ))
469
- .take(3 )
470
- .map { it.toInt() }
471
- } catch (e: Exception ) {
472
- throw Exception (" Unsupported powersync extension version. Need ^0.2.0, got: $powerSyncVersion . Details: $e " )
473
- }
474
-
475
- // Validate ^0.2.0
476
- if (versionInts[0 ] != 0 || versionInts[1 ] < 2 || versionInts[2 ] < 0 ) {
477
- throw Exception (" Unsupported powersync extension version. Need ^0.2.0, got: $powerSyncVersion " )
465
+ val version = PowerSyncVersion .parse(powerSyncVersion)
466
+ if (version < PowerSyncVersion .MINIMUM ) {
467
+ PowerSyncVersion .mismatchError(powerSyncVersion)
478
468
}
479
469
}
480
470
}
Original file line number Diff line number Diff line change
1
+ package com.powersync.db.internal
2
+
3
+ internal data class PowerSyncVersion (val major : Int , val minor : Int , val patch : Int ): Comparable<PowerSyncVersion> {
4
+ override fun compareTo (other : PowerSyncVersion ): Int {
5
+ return when (val compareMajor = major.compareTo(other.major)) {
6
+ 0 -> when (val compareMinor = minor.compareTo(other.minor)) {
7
+ 0 -> patch.compareTo(other.patch)
8
+ else -> compareMinor
9
+ }
10
+ else -> compareMajor
11
+ }
12
+ }
13
+
14
+ override fun toString (): String {
15
+ return " $major .$minor .$patch "
16
+ }
17
+
18
+ companion object {
19
+ val MINIMUM : PowerSyncVersion = PowerSyncVersion (0 , 3 , 13 )
20
+
21
+ fun parse (from : String ): PowerSyncVersion {
22
+ val versionInts: List <Int > =
23
+ try {
24
+ from
25
+ .split(Regex (" [./]" ))
26
+ .take(3 )
27
+ .map { it.toInt() }
28
+ } catch (e: Exception ) {
29
+ mismatchError(from, e.toString())
30
+ }
31
+
32
+ return PowerSyncVersion (versionInts[0 ], versionInts[1 ], versionInts[2 ])
33
+ }
34
+
35
+ fun mismatchError (actualVersion : String , details : String? = null): Nothing {
36
+ var message = " Unsupported PowerSync extension version (need ^$MINIMUM , got $actualVersion )."
37
+ if (details != null ) {
38
+ message = " Details: $details "
39
+ }
40
+
41
+ throw Exception (message)
42
+ }
43
+ }
44
+ }
You can’t perform that action at this time.
0 commit comments