mirror of
https://github.com/PranshulGG/WeatherMaster.git
synced 2026-10-23 11:33:42 -05:00
implement air quality and AccuWeather data cleanup in WeatherDataReconcilerRepository
This commit is contained in:
1 parent
06b7c6648d
commit
c2b424f347
1 file changed
+33
-5
+33
-5
@@ -1,6 +1,9 @@
|
||||
package com.pranshulgg.weather_master_app.data.repository
|
||||
|
||||
import com.pranshulgg.weather_master_app.core.model.sources.AirQualitySource
|
||||
import com.pranshulgg.weather_master_app.core.model.sources.WeatherSource
|
||||
import com.pranshulgg.weather_master_app.data.local.dao.airquality.AirQualityDao
|
||||
import com.pranshulgg.weather_master_app.data.local.dao.airquality.accu.AccuDao
|
||||
import com.pranshulgg.weather_master_app.data.local.dao.location.LocationsDao
|
||||
import com.pranshulgg.weather_master_app.data.local.dao.weather.nws.NwsDao
|
||||
import jakarta.inject.Inject
|
||||
@@ -8,7 +11,9 @@ import jakarta.inject.Inject
|
||||
|
||||
class WeatherDataReconcilerRepository @Inject constructor(
|
||||
private val nwsDao: NwsDao,
|
||||
private val locationDao: LocationsDao
|
||||
private val locationDao: LocationsDao,
|
||||
private val accuDao: AccuDao,
|
||||
private val airQualityDao: AirQualityDao
|
||||
) {
|
||||
|
||||
/**
|
||||
@@ -17,14 +22,37 @@ class WeatherDataReconcilerRepository @Inject constructor(
|
||||
* NWS might have saved grid points
|
||||
* which are important to be removed from the DB so they don't end up stale
|
||||
*/
|
||||
suspend fun cleanUpStaleData(previousSource: WeatherSource, locationId: String) {
|
||||
suspend fun cleanUpStaleData(
|
||||
previousSource: WeatherSource,
|
||||
locationId: String,
|
||||
airQualitySource: AirQualitySource
|
||||
) {
|
||||
when (previousSource) {
|
||||
WeatherSource.NWS -> cleanNws(locationId)
|
||||
WeatherSource.NWS -> nwsDao.deleteGridPointsForLocation(locationId)
|
||||
WeatherSource.ACCU_WEATHER -> cleanAccuWeather(locationId, airQualitySource)
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun cleanNws(locationId: String) {
|
||||
nwsDao.deleteGridPointsForLocation(locationId)
|
||||
suspend fun cleanAccuWeather(locationId: String, airQualitySource: AirQualitySource) {
|
||||
if (airQualitySource != AirQualitySource.ACCU_WEATHER) {
|
||||
accuDao.deleteCityKeyForLocation(locationId)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun cleanUpStateAirQualityData(
|
||||
currentSource: AirQualitySource,
|
||||
locationId: String,
|
||||
currentWeatherSource: WeatherSource
|
||||
) {
|
||||
if (currentSource == AirQualitySource.NONE) {
|
||||
airQualityDao.deleteCurrentAirQuality(locationId)
|
||||
airQualityDao.deleteHourlyAirQuality(locationId)
|
||||
}
|
||||
|
||||
if (currentWeatherSource != WeatherSource.ACCU_WEATHER) {
|
||||
accuDao.deleteCityKeyForLocation(locationId)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user