Skip to content

Commit 828e5ab

Browse files
authored
Cache clearing implemented
Fixes #111 : cache clearing implemented
2 parents 2bf04f2 + 97c49ed commit 828e5ab

File tree

12 files changed

+50
-23
lines changed

12 files changed

+50
-23
lines changed

app/src/main/java/com/github/code/gambit/data/local/CacheDataSource.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ interface CacheDataSource {
1212
suspend fun deleteFiles(): Int
1313
suspend fun insertUrls(urls: List<Url>): Long
1414
suspend fun getUrls(fileId: String): List<Url>
15+
suspend fun deleteUrls(): Int
1516
suspend fun insertFileMetaData(fileMetaData: FileMetaData): Long
1617
suspend fun getAllFileMetaData(): List<FileMetaData>
1718
suspend fun deleteFileMetaData(uuid: String)

app/src/main/java/com/github/code/gambit/data/local/CacheDataSourceImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ constructor(
4949
return urlCacheMapper.mapFromEntityList(urls)
5050
}
5151

52+
override suspend fun deleteUrls(): Int {
53+
return urlDao.deleteUrls()
54+
}
55+
5256
override suspend fun insertFileMetaData(fileMetaData: FileMetaData): Long {
5357
val data: FileMetaDataCacheEntity = fileMetaDataMapper.mapToEntity(fileMetaData)
5458
return fileWorkerDao.insertFileMetaData(data)

app/src/main/java/com/github/code/gambit/data/local/UrlDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ interface UrlDao {
1717

1818
@Query("SELECT * FROM urls WHERE fileId = :fileId ORDER BY timestamp DESC")
1919
suspend fun getUrls(fileId: String): List<UrlCacheEntity>
20+
21+
@Query("DELETE FROM urls")
22+
suspend fun deleteUrls(): Int
2023
}

app/src/main/java/com/github/code/gambit/data/remote/ApiRequest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ suspend fun <T> apiRequest(
1111
keyType: LastEvaluatedKeyManager.KeyType,
1212
call: suspend (lek: String) -> ListResponse<T>
1313
): List<T> {
14-
val response = call.invoke(lekManager.getLastEvalKey(LastEvaluatedKeyManager.KeyType.FILE))
14+
val response = call.invoke(lekManager.getLastEvalKey(keyType))
1515
response.body?.let { body ->
1616
body.lastEvaluatedKey?.let { lekManager.putLastEvalKey(it, keyType) }
1717
return body.items

app/src/main/java/com/github/code/gambit/data/remote/NetworkDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.github.code.gambit.data.model.Url
55
import com.github.code.gambit.data.model.User
66

77
interface NetworkDataSource {
8-
suspend fun getFiles(): List<File>
8+
suspend fun getFiles(force: Boolean = false): List<File>
99
suspend fun searchFiles(searchParam: String): List<File>
1010
suspend fun filterFiles(start: String, end: String): List<File>
1111
suspend fun uploadFile(file: File): File

app/src/main/java/com/github/code/gambit/data/remote/NetworkDataSourceImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class NetworkDataSourceImpl(
1919
private val userNetworkMapper: UserNetworkMapper
2020
) : NetworkDataSource {
2121

22-
override suspend fun getFiles(): List<File> {
23-
return fileNetworkMapper.mapFromEntityList(fileService.getFiles())
22+
override suspend fun getFiles(force: Boolean): List<File> {
23+
return fileNetworkMapper.mapFromEntityList(fileService.getFiles(force))
2424
}
2525

2626
override suspend fun filterFiles(start: String, end: String): List<File> {

app/src/main/java/com/github/code/gambit/data/remote/services/file/FileService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.github.code.gambit.data.entity.network.FileNetworkEntity
44

55
interface FileService {
66

7-
suspend fun getFiles(): List<FileNetworkEntity>
7+
suspend fun getFiles(force: Boolean): List<FileNetworkEntity>
88
suspend fun searchFile(searchParam: String): List<FileNetworkEntity>
99
suspend fun filterFiles(start: String, end: String): List<FileNetworkEntity>
1010
suspend fun uploadFile(fileNetworkEntity: FileNetworkEntity): FileNetworkEntity

app/src/main/java/com/github/code/gambit/data/remote/services/file/FileServiceImpl.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ class FileServiceImpl(
1414

1515
private val userId get() = userManager.getUserId()
1616

17-
override suspend fun getFiles(): List<FileNetworkEntity> {
17+
override suspend fun getFiles(force: Boolean): List<FileNetworkEntity> {
18+
if (force) {
19+
lekManager.putLastEvalKey("", LastEvaluatedKeyManager.KeyType.FILE)
20+
}
1821
return apiRequest(lekManager, LastEvaluatedKeyManager.KeyType.FILE) { lek ->
1922
apiService.getFiles(userId, lek, null)
2023
}

app/src/main/java/com/github/code/gambit/repositories/home/HomeRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.Flow
88

99
interface HomeRepository {
1010

11-
suspend fun getFiles(): Flow<ServiceResult<List<File>>>
11+
suspend fun getFiles(clearCache: Boolean = false): Flow<ServiceResult<List<File>>>
1212
suspend fun searchFile(searchString: String): Flow<ServiceResult<List<File>>>
1313
suspend fun searchFileByFilter(filter: Filter): Flow<ServiceResult<List<File>>>
1414
suspend fun deleteFile(file: File): Flow<ServiceResult<Boolean>>

app/src/main/java/com/github/code/gambit/repositories/home/HomeRepositoryImpl.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,21 @@ constructor(
2020
private val networkDataSource: NetworkDataSource
2121
) : HomeRepository {
2222

23-
override suspend fun getFiles(): Flow<ServiceResult<List<File>>> {
23+
private suspend fun clearCacheDb() {
24+
cacheDataSource.deleteFiles()
25+
cacheDataSource.deleteUrls()
26+
}
27+
28+
override suspend fun getFiles(clearCache: Boolean): Flow<ServiceResult<List<File>>> {
2429
return flow {
2530
val data: List<File>
2631
try {
27-
data = networkDataSource.getFiles()
32+
if (clearCache) {
33+
data = networkDataSource.getFiles(true)
34+
clearCacheDb()
35+
} else {
36+
data = networkDataSource.getFiles()
37+
}
2838
cacheDataSource.insertFiles(data)
2939
val files = cacheDataSource.getFiles()
3040
emit(ServiceResult.Success(files))

0 commit comments

Comments
 (0)