diff --git a/app/src/main/java/com/example/kocelainterview/common/di/repositorymodule/RepositoryModule.kt b/app/src/main/java/com/example/kocelainterview/common/di/repositorymodule/RepositoryModule.kt index 862a977..c6ca33e 100644 --- a/app/src/main/java/com/example/kocelainterview/common/di/repositorymodule/RepositoryModule.kt +++ b/app/src/main/java/com/example/kocelainterview/common/di/repositorymodule/RepositoryModule.kt @@ -38,7 +38,7 @@ object RepositoryModule { context.applicationContext, ShipDatabase::class.java, "ship_database" - ).build() + ).fallbackToDestructiveMigration().build() } @Provides diff --git a/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipDatabase.kt b/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipDatabase.kt index b2d17b8..8181988 100644 --- a/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipDatabase.kt +++ b/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipDatabase.kt @@ -3,7 +3,7 @@ package com.example.kocelainterview.data.local_data_source import androidx.room.Database import androidx.room.RoomDatabase -@Database(entities = [ShipEntity::class], version = 1, exportSchema = false) +@Database(entities = [ShipEntity::class], version = 2, exportSchema = false) abstract class ShipDatabase:RoomDatabase (){ abstract fun shipDao():ShipDao } \ No newline at end of file diff --git a/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipEntity.kt b/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipEntity.kt index e63dba2..5b79ce2 100644 --- a/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipEntity.kt +++ b/app/src/main/java/com/example/kocelainterview/data/local_data_source/ShipEntity.kt @@ -9,7 +9,7 @@ data class ShipEntity( val ship_id: String, val active: Boolean, - val image: String, + val image: String?, val ship_name: String, @PrimaryKey val weight_kg: Int, diff --git a/app/src/main/java/com/example/kocelainterview/data/remote/dto/ShipDto.kt b/app/src/main/java/com/example/kocelainterview/data/remote/dto/ShipDto.kt index 48b5a40..12a998d 100644 --- a/app/src/main/java/com/example/kocelainterview/data/remote/dto/ShipDto.kt +++ b/app/src/main/java/com/example/kocelainterview/data/remote/dto/ShipDto.kt @@ -13,7 +13,7 @@ data class ShipDto( // val `class`: Int, // val course_deg: Any, // val home_port: String, - val image: String, + val image: String?, // val imo: Int, // val mmsi: Int, // val roles: List, diff --git a/app/src/main/java/com/example/kocelainterview/data/repository/ShipRepositoryImpl.kt b/app/src/main/java/com/example/kocelainterview/data/repository/ShipRepositoryImpl.kt index 27acb13..29ec99e 100644 --- a/app/src/main/java/com/example/kocelainterview/data/repository/ShipRepositoryImpl.kt +++ b/app/src/main/java/com/example/kocelainterview/data/repository/ShipRepositoryImpl.kt @@ -7,6 +7,8 @@ import com.example.kocelainterview.data.remote.dto.ShipDetailDto import com.example.kocelainterview.data.remote.dto.ShipDto import com.example.kocelainterview.data.remote.dto.toEntity import com.example.kocelainterview.domain.repository_interface.ShipRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import javax.inject.Inject class ShipRepositoryImpl @Inject constructor( @@ -14,11 +16,11 @@ class ShipRepositoryImpl @Inject constructor( private val shipDao: ShipDao ) : ShipRepository { - override suspend fun getShips(): List { + override suspend fun getShips(): List = withContext(Dispatchers.IO) { // Check Room database first val cachedShips = shipDao.getShips() if (cachedShips.isNotEmpty()) { - return cachedShips.map { it.toShipDto() } + return@withContext cachedShips.map { it.toShipDto() } } // Fetch from API if not found in cache @@ -27,10 +29,10 @@ class ShipRepositoryImpl @Inject constructor( // Save to Room database shipDao.saveShips(ships.map { it.toEntity() }) - return ships + return@withContext ships } - override suspend fun getShipById(shipId: String): ShipDetailDto { - return api.getShipById(shipId) + override suspend fun getShipById(shipId: String): ShipDetailDto= withContext(Dispatchers.IO) { + return@withContext api.getShipById(shipId) } }