Ensure clearing the cache delete the CacheStore.

This commit is contained in:
Benoit Marty 2026-04-30 09:01:35 +02:00
parent 93717d0db0
commit ed58f7161e
8 changed files with 45 additions and 2 deletions

View file

@ -11,4 +11,5 @@ interface CacheStore {
suspend fun storeData(key: String, data: CacheData)
suspend fun getData(key: String): CacheData?
suspend fun deleteData(key: String)
suspend fun deleteAll()
}

View file

@ -27,10 +27,14 @@ class DatabaseCacheStore(
override suspend fun storeData(key: String, data: CacheData) {
database.cacheDataQueries.insertData(
data.toDbModel(key)
)
).await()
}
override suspend fun deleteData(key: String) {
database.cacheDataQueries.deleteData(key)
database.cacheDataQueries.deleteData(key).await()
}
override suspend fun deleteAll() {
database.cacheDataQueries.deleteAll().await()
}
}

View file

@ -23,3 +23,6 @@ INSERT OR REPLACE INTO CacheData VALUES ?;
deleteData:
DELETE FROM CacheData WHERE key = ?;
deleteAll:
DELETE FROM CacheData;

View file

@ -65,4 +65,22 @@ class DatabaseCacheStoreTest {
databaseCacheStore.deleteData(A_KEY)
assertThat(database.cacheDataQueries.selectData(A_KEY).executeAsOneOrNull()).isNull()
}
@Test
fun `deleteAll deletes all the data`() = runTest {
// Assert that no data is stored for the key
assertThat(database.cacheDataQueries.selectData(A_KEY).executeAsOneOrNull()).isNull()
// Store data
databaseCacheStore.storeData(A_KEY, CacheData(A_DATA_1, 1))
assertThat(database.cacheDataQueries.selectData(A_KEY).executeAsOneOrNull()).isEqualTo(
DbCacheData(
key = A_KEY,
value_ = A_DATA_1,
updatedAt = 1,
)
)
// Delete all data
databaseCacheStore.deleteAll()
assertThat(database.cacheDataQueries.selectData(A_KEY).executeAsOneOrNull()).isNull()
}
}

View file

@ -26,4 +26,8 @@ class InMemoryCacheStore(
override suspend fun deleteData(key: String) {
dataMap.remove(key)
}
override suspend fun deleteAll() {
dataMap.clear()
}
}