Skip to content

Commit 5de3c47

Browse files
Treehugger RobotGerrit Code Review
authored andcommitted
Merge "Commonize clearAllTables()" into androidx-main
2 parents e854b86 + d01f347 commit 5de3c47

22 files changed

Lines changed: 98 additions & 59 deletions

File tree

room3/integration-tests/multiplatformtestapp/src/commonTest/kotlin/androidx/room3/integration/multiplatformtestapp/test/BaseQueryTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,4 +454,13 @@ abstract class BaseQueryTest {
454454
val result = db.libraryDao().getAll()
455455
assertThat(result).containsExactlyElementsIn(items)
456456
}
457+
458+
@Test
459+
fun clearTables() = runTest {
460+
val dao = db.dao()
461+
repeat(10) { dao.insertItem(it.toLong()) }
462+
assertThat(dao.getItemList().size).isEqualTo(10)
463+
db.clearAllTables()
464+
assertThat(dao.getItemList()).isEmpty()
465+
}
457466
}

room3/room3-compiler/src/main/kotlin/androidx/room3/ext/xpoet_ext.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ object RoomMemberNames {
223223
RoomTypeNames.DB_UTIL.packageMember("performInTransactionSuspending")
224224
val DB_UTIL_PERFORM_IN_TRANSACTION_BLOCKING =
225225
RoomTypeNames.DB_UTIL.packageMember("performInTransactionBlocking")
226+
val DB_UTIL_PERFORM_CLEAR = RoomTypeNames.DB_UTIL.packageMember("performClear")
226227
val STATEMENT_UTIL_WRAP_MAPPED_COLUMNS =
227228
RoomTypeNames.STATEMENT_UTIL.packageMember("wrapMappedColumns")
228229
val ROOM_SQL_QUERY_ACQUIRE =

room3/room3-compiler/src/main/kotlin/androidx/room3/processor/DatabaseProcessor.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,6 @@ class DatabaseProcessor(baseContext: Context, val element: XTypeElement) {
125125

126126
val hasForeignKeys = entities.any { it.foreignKeys.isNotEmpty() }
127127

128-
val hasClearAllTables =
129-
roomDatabaseTypeElement.getDeclaredMethods().any { it.name == "clearAllTables" }
130-
131128
val version = dbAnnotation.getAsInt("version")
132129
context.checker.check(
133130
predicate = version > 0,
@@ -147,7 +144,6 @@ class DatabaseProcessor(baseContext: Context, val element: XTypeElement) {
147144
daoFunctions = daoFunctions,
148145
exportSchema = exportSchema,
149146
enableForeignKeys = hasForeignKeys,
150-
overrideClearAllTables = hasClearAllTables,
151147
constructorObject = constructorObject,
152148
)
153149
database.autoMigrations = processAutoMigrations(element, dbAnnotation, database.bundle)

room3/room3-compiler/src/main/kotlin/androidx/room3/vo/Database.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ data class Database(
3939
val version: Int,
4040
val exportSchema: Boolean,
4141
val enableForeignKeys: Boolean,
42-
val overrideClearAllTables: Boolean,
4342
val constructorObject: DatabaseConstructor?,
4443
) {
4544
// This variable will be set once auto-migrations are processed given the DatabaseBundle from

room3/room3-compiler/src/main/kotlin/androidx/room3/writer/DatabaseWriter.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import androidx.room3.compiler.processing.PropertySpecHelper
3636
import androidx.room3.ext.CommonTypeNames
3737
import androidx.room3.ext.KotlinCollectionMemberNames
3838
import androidx.room3.ext.KotlinTypeNames
39+
import androidx.room3.ext.RoomMemberNames
3940
import androidx.room3.ext.RoomTypeNames
4041
import androidx.room3.ext.decapitalize
4142
import androidx.room3.ext.stripNonJava
@@ -58,9 +59,7 @@ class DatabaseWriter(val database: Database, writerContext: WriterContext) :
5859
setVisibility(VisibilityModifier.INTERNAL)
5960
addFunction(createOpenDelegate())
6061
addFunction(createCreateInvalidationTracker())
61-
if (database.overrideClearAllTables) {
62-
addFunction(createClearAllTables())
63-
}
62+
addFunction(createClearAllTables())
6463
addFunction(createCreateTypeConvertersMap())
6564
addFunction(createCreateAutoMigrationSpecsSet())
6665
addFunction(createGetAutoMigrations())
@@ -169,13 +168,19 @@ class DatabaseWriter(val database: Database, writerContext: WriterContext) :
169168
name = "clearAllTables",
170169
visibility = VisibilityModifier.PUBLIC,
171170
isOverride = true,
171+
isSuspend = true,
172172
)
173173
.apply {
174174
val tableNames =
175175
database.entities.sortedWith(EntityDeleteComparator()).joinToString(", ") {
176176
"\"${it.tableName}\""
177177
}
178-
addStatement("super.performClear(%L, %L)", database.enableForeignKeys, tableNames)
178+
addStatement(
179+
"%M(this, %L, %L)",
180+
RoomMemberNames.DB_UTIL_PERFORM_CLEAR,
181+
database.enableForeignKeys,
182+
tableNames,
183+
)
179184
}
180185
.build()
181186
}

room3/room3-compiler/src/test/kotlin/androidx/room3/verifier/DatabaseVerifierTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,6 @@ class DatabaseVerifierTest(private val useLocalizedCollation: Boolean) {
403403
version = -1,
404404
exportSchema = false,
405405
enableForeignKeys = false,
406-
overrideClearAllTables = true,
407406
constructorObject = null,
408407
)
409408
}

room3/room3-compiler/src/test/kotlin/androidx/room3/vo/DatabaseTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class DatabaseTest {
7272
version = 1,
7373
exportSchema = false,
7474
enableForeignKeys = false,
75-
overrideClearAllTables = true,
7675
constructorObject = null,
7776
)
7877

room3/room3-compiler/src/test/test-data/kotlinCodeGen/database_daoProperty.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.room3.migration.Migration
55
import androidx.room3.util.TableInfo
66
import androidx.room3.util.TableInfo.Companion.read
77
import androidx.room3.util.dropFtsSyncTriggers
8+
import androidx.room3.util.performClear
89
import androidx.sqlite.SQLiteConnection
910
import androidx.sqlite.executeSQL
1011
import javax.`annotation`.processing.Generated
@@ -86,8 +87,8 @@ internal class MyDatabase_Impl : MyDatabase() {
8687
return InvalidationTracker(this, _shadowTablesMap, _viewTables, "MyEntity")
8788
}
8889

89-
public override fun clearAllTables() {
90-
super.performClear(false, "MyEntity")
90+
public override suspend fun clearAllTables() {
91+
performClear(this, false, "MyEntity")
9192
}
9293

9394
protected override fun getRequiredTypeConverterClasses(): Map<KClass<*>, List<KClass<*>>> {

room3/room3-compiler/src/test/test-data/kotlinCodeGen/database_internalVisibility.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.room3.migration.Migration
55
import androidx.room3.util.TableInfo
66
import androidx.room3.util.TableInfo.Companion.read
77
import androidx.room3.util.dropFtsSyncTriggers
8+
import androidx.room3.util.performClear
89
import androidx.sqlite.SQLiteConnection
910
import androidx.sqlite.executeSQL
1011
import javax.`annotation`.processing.Generated
@@ -83,8 +84,8 @@ internal class MyDatabase_Impl : MyDatabase() {
8384
return InvalidationTracker(this, _shadowTablesMap, _viewTables, "MyEntity")
8485
}
8586

86-
public override fun clearAllTables() {
87-
super.performClear(false, "MyEntity")
87+
public override suspend fun clearAllTables() {
88+
performClear(this, false, "MyEntity")
8889
}
8990

9091
protected override fun getRequiredTypeConverterClasses(): Map<KClass<*>, List<KClass<*>>> {

room3/room3-compiler/src/test/test-data/kotlinCodeGen/database_java.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.room3.migration.Migration
55
import androidx.room3.util.TableInfo
66
import androidx.room3.util.TableInfo.Companion.read
77
import androidx.room3.util.dropFtsSyncTriggers
8+
import androidx.room3.util.performClear
89
import androidx.sqlite.SQLiteConnection
910
import androidx.sqlite.executeSQL
1011
import javax.`annotation`.processing.Generated
@@ -83,8 +84,8 @@ internal class MyDatabase_Impl : MyDatabase() {
8384
return InvalidationTracker(this, _shadowTablesMap, _viewTables, "MyEntity")
8485
}
8586

86-
public override fun clearAllTables() {
87-
super.performClear(false, "MyEntity")
87+
public override suspend fun clearAllTables() {
88+
performClear(this, false, "MyEntity")
8889
}
8990

9091
protected override fun getRequiredTypeConverterClasses(): Map<KClass<*>, List<KClass<*>>> {

0 commit comments

Comments
 (0)