From c2b424f347c5441bd2b424445fbffb633953f05a Mon Sep 17 00:00:00 2001 From: PranshulGG Date: Mon, 27 Jul 2026 16:31:15 +0530 Subject: [PATCH] implement air quality and AccuWeather data cleanup in WeatherDataReconcilerRepository --- .../WeatherDataReconcilerRepository.kt | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/data/repository/WeatherDataReconcilerRepository.kt b/app/src/main/java/com/pranshulgg/weather_master_app/data/repository/WeatherDataReconcilerRepository.kt index d85a6b563..77e5719ff 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/data/repository/WeatherDataReconcilerRepository.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/data/repository/WeatherDataReconcilerRepository.kt @@ -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) + } + } + } \ No newline at end of file