implement air quality and AccuWeather data cleanup in WeatherDataReconcilerRepository

This commit is contained in:
PranshulGG committed 2026-07-27 16:31:15 +05:30
1 parent 06b7c6648d
commit c2b424f347
1 file changed
+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)
}
}
}