Skip to content

Commit 356bce5

Browse files
Merge branch 'main' into feat/add-android-demo
2 parents e49d87c + 411bf13 commit 356bce5

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -284,19 +284,10 @@ internal class PowerSyncDatabaseImpl(
284284
override suspend fun disconnectAndClear(clearLocal: Boolean) {
285285
disconnect()
286286

287-
this.writeTransaction { tx ->
288-
tx.execute("DELETE FROM ${InternalTable.OPLOG}")
289-
tx.execute("DELETE FROM ${InternalTable.CRUD}")
290-
tx.execute("DELETE FROM ${InternalTable.BUCKETS}")
291-
tx.execute("DELETE FROM ${InternalTable.UNTYPED}")
292-
293-
val tableGlob = if (clearLocal) "ps_data_*" else "ps_data__*"
294-
val existingTableRows = internalDb.getExistingTableNames(tableGlob)
295-
296-
for (row in existingTableRows) {
297-
tx.execute("DELETE FROM ${quoteIdentifier(row)}")
298-
}
287+
this.writeTransaction {
288+
internalDb.queries.powersyncClear(if(clearLocal) "1" else "0").awaitAsOne()
299289
}
290+
currentStatus.update(lastSyncedAt = null, hasSynced = false)
300291
}
301292

302293
private suspend fun updateHasSynced() {

dialect/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# SQLDelight Custom PowerSync Dialect
2+
3+
This defines the custom PowerSync SQLite functions to be used in the `PowerSync.sq` file found in the `persistence` module.
4+
5+
## Example
6+
```kotlin
7+
public class PowerSyncTypeResolver(private val parentResolver: TypeResolver) :
8+
TypeResolver by SqliteTypeResolver(parentResolver) {
9+
override fun functionType(functionExpr: SqlFunctionExpr): IntermediateType? {
10+
when (functionExpr.functionName.text) {
11+
"powersync_replace_schema" -> return IntermediateType(
12+
PrimitiveType.TEXT
13+
)
14+
}
15+
return parentResolver.functionType(functionExpr)
16+
}
17+
}
18+
```
19+
20+
allows
21+
22+
```sql
23+
replaceSchema:
24+
SELECT powersync_replace_schema(?);
25+
```
26+
27+
To be used in the `PowerSync.sq` file in the `persistence` module.

dialect/src/main/kotlin/com/powersync/sqlite/PowerSyncDialect.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class PowerSyncTypeResolver(private val parentResolver: TypeResolver) :
1616
TypeResolver by SqliteTypeResolver(parentResolver) {
1717
override fun functionType(functionExpr: SqlFunctionExpr): IntermediateType? {
1818
when (functionExpr.functionName.text) {
19-
"sqlite_version", "powersync_rs_version", "powersync_replace_schema" -> return IntermediateType(
19+
"sqlite_version", "powersync_rs_version", "powersync_replace_schema", "powersync_clear" -> return IntermediateType(
2020
PrimitiveType.TEXT
2121
)
2222
}

persistence/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ android {
5454
buildConfigField("boolean", "DEBUG", "true")
5555
}
5656
}
57+
defaultConfig {
58+
minSdk = libs.versions.android.minSdk.get().toInt()
59+
}
5760

5861
namespace = "com.powersync.persistence"
5962
compileSdk = libs.versions.android.compileSdk.get().toInt()

persistence/src/commonMain/sqldelight/com/persistence/Powersync.sq

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ SELECT powersync_rs_version();
88
replaceSchema:
99
SELECT powersync_replace_schema(?);
1010

11+
powersyncClear:
12+
SELECT powersync_clear(?);
13+
1114
-- CRUD operations
1215
hasCrud:
1316
SELECT 1 FROM ps_crud LIMIT 1;

0 commit comments

Comments
 (0)