diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/AppModule.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/AppModule.kt index 333c659de..83c1bc409 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/AppModule.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/AppModule.kt @@ -44,64 +44,6 @@ object AppModule { ): WeatherMasterDatabase = WeatherMasterDatabase.getInstance(context) - @Provides - fun provideLocationDao(db: WeatherMasterDatabase) = - db.locationsDao() - - @Provides - fun provideWeatherDataDao(db: WeatherMasterDatabase) = - db.weatherDao() - - @Provides - fun provideWeatherUnitsDao(db: WeatherMasterDatabase) = - db.weatherUnitsDao() - - @Provides - fun provideWeatherBlocksDao(db: WeatherMasterDatabase) = - db.weatherBlocksDao() - - @Provides - fun provideAirQualityDao(db: WeatherMasterDatabase) = db.airQualityDao() - - @Provides - fun provideNwsDao(db: WeatherMasterDatabase) = db.nwsDao() - - @Provides - @Singleton - fun provideOpenMeteoApi(): OpenMeteoApi = OpenMeteoApi.create() - - @Provides - @Singleton - fun provideOpenMeteoSearchApi(): OpenMeteoSearchApi = OpenMeteoSearchApi.create() - - @Provides - @Singleton - fun provideGeoNamesSearchApi(): GeoNamesSearchApi = GeoNamesSearchApi.create() - - @Provides - @Singleton - fun provideGeoNamesTimezoneApi(): GeoNamesTimezoneApi = GeoNamesTimezoneApi.create() - - @Provides - @Singleton - fun provideOpenMeteoAqiApi(): OpenMeteoAqiApi = OpenMeteoAqiApi.create() - - @Provides - @Singleton - fun provideNwsApi(): NwsApi = NwsApi.create() - - @Provides - @Singleton - fun provideMetNorwayApi(): MetNorwayApi = MetNorwayApi.create() - - @Provides - @Singleton - fun provideOpenMeteoRepository( - dao: LocationsDao, - api: OpenMeteoApi, - weatherDao: WeatherDao - ): OpenMeteoRepository = OpenMeteoRepository(dao, weatherDao, api) - @Provides @Singleton @@ -124,47 +66,6 @@ object AppModule { ): WeatherBlocksRepository = WeatherBlocksRepository(weatherBlocksDao) - @Provides - @Singleton - fun provideOpenMeteoSearchRepository( - api: OpenMeteoSearchApi - ): OpenMeteoSearchRepository = OpenMeteoSearchRepository(api) - - @Provides - @Singleton - fun provideGeoNamesSearchRepository( - api: GeoNamesSearchApi - ): GeoNamesSearchRepository = GeoNamesSearchRepository(api) - - @Provides - @Singleton - fun provideGeoNamesTimezoneRepository(api: GeoNamesTimezoneApi): GeoNamesTimezoneRepository = - GeoNamesTimezoneRepository(api) - - @Provides - @Singleton - fun provideOpenMeteoAqiRepository( - api: OpenMeteoAqiApi, - dao: AirQualityDao - ): OpenMeteoAqiRepository = - OpenMeteoAqiRepository(api, dao) - - @Provides - @Singleton - fun provideNwsRepository( - api: NwsApi, - dao: LocationsDao, - weatherDao: WeatherDao, - nwsDao: NwsDao - ): NwsRepository = NwsRepository(dao, weatherDao, nwsDao, api) - - @Provides - @Singleton - fun provideMetNorwayRepository( - dao: LocationsDao, - api: MetNorwayApi, - weatherDao: WeatherDao - ): MetNorwayRepository = MetNorwayRepository(dao, weatherDao, api) @Provides @Singleton diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/db/DaoModule.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/db/DaoModule.kt new file mode 100644 index 000000000..630596370 --- /dev/null +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/db/DaoModule.kt @@ -0,0 +1,34 @@ +package com.pranshulgg.weather_master_app.core.di.db + +import com.pranshulgg.weather_master_app.data.local.WeatherMasterDatabase +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + + +@Module +@InstallIn(SingletonComponent::class) +object DaoModule { + @Provides + fun provideLocationDao(db: WeatherMasterDatabase) = + db.locationsDao() + + @Provides + fun provideWeatherDataDao(db: WeatherMasterDatabase) = + db.weatherDao() + + @Provides + fun provideWeatherUnitsDao(db: WeatherMasterDatabase) = + db.weatherUnitsDao() + + @Provides + fun provideWeatherBlocksDao(db: WeatherMasterDatabase) = + db.weatherBlocksDao() + + @Provides + fun provideAirQualityDao(db: WeatherMasterDatabase) = db.airQualityDao() + + @Provides + fun provideNwsDao(db: WeatherMasterDatabase) = db.nwsDao() +} \ No newline at end of file diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt new file mode 100644 index 000000000..642b59bf5 --- /dev/null +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt @@ -0,0 +1,52 @@ +package com.pranshulgg.weather_master_app.core.di.network + +import com.pranshulgg.weather_master_app.core.network.sources.airquality.openmeteo.OpenMeteoAqiApi +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.GeoNamesSearchApi +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.timezone.GeoNamesTimezoneApi +import com.pranshulgg.weather_master_app.core.network.sources.search.openmeteo.OpenMeteoSearchApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.metnorway.MetNorwayApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.nws.NwsApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.openmeteo.OpenMeteoApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.smhi.SmhiApi +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + + +@Module +@InstallIn(SingletonComponent::class) +object ApiModule { + @Provides + @Singleton + fun provideOpenMeteoApi(): OpenMeteoApi = OpenMeteoApi.create() + + @Provides + @Singleton + fun provideOpenMeteoSearchApi(): OpenMeteoSearchApi = OpenMeteoSearchApi.create() + + @Provides + @Singleton + fun provideGeoNamesSearchApi(): GeoNamesSearchApi = GeoNamesSearchApi.create() + + @Provides + @Singleton + fun provideGeoNamesTimezoneApi(): GeoNamesTimezoneApi = GeoNamesTimezoneApi.create() + + @Provides + @Singleton + fun provideOpenMeteoAqiApi(): OpenMeteoAqiApi = OpenMeteoAqiApi.create() + + @Provides + @Singleton + fun provideNwsApi(): NwsApi = NwsApi.create() + + @Provides + @Singleton + fun provideMetNorwayApi(): MetNorwayApi = MetNorwayApi.create() + + @Provides + @Singleton + fun provideSmhiApi(): SmhiApi = SmhiApi.create() +} \ No newline at end of file diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/search/SearchRepositoryModule.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/search/SearchRepositoryModule.kt new file mode 100644 index 000000000..4f371602c --- /dev/null +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/search/SearchRepositoryModule.kt @@ -0,0 +1,35 @@ +package com.pranshulgg.weather_master_app.core.di.search + +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.GeoNamesSearchApi +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.GeoNamesSearchRepository +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.GeoNamesTimezoneRepository +import com.pranshulgg.weather_master_app.core.network.sources.search.geonames.timezone.GeoNamesTimezoneApi +import com.pranshulgg.weather_master_app.core.network.sources.search.openmeteo.OpenMeteoSearchApi +import com.pranshulgg.weather_master_app.core.network.sources.search.openmeteo.OpenMeteoSearchRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object SearchRepositoryModule { + @Provides + @Singleton + fun provideOpenMeteoSearchRepository( + api: OpenMeteoSearchApi + ): OpenMeteoSearchRepository = OpenMeteoSearchRepository(api) + + @Provides + @Singleton + fun provideGeoNamesSearchRepository( + api: GeoNamesSearchApi + ): GeoNamesSearchRepository = GeoNamesSearchRepository(api) + + @Provides + @Singleton + fun provideGeoNamesTimezoneRepository(api: GeoNamesTimezoneApi): GeoNamesTimezoneRepository = + GeoNamesTimezoneRepository(api) + +} \ No newline at end of file diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt new file mode 100644 index 000000000..85fa46c24 --- /dev/null +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt @@ -0,0 +1,66 @@ +package com.pranshulgg.weather_master_app.core.di.weather + +import com.pranshulgg.weather_master_app.core.network.sources.airquality.openmeteo.OpenMeteoAqiApi +import com.pranshulgg.weather_master_app.core.network.sources.airquality.openmeteo.OpenMeteoAqiRepository +import com.pranshulgg.weather_master_app.core.network.sources.weather.metnorway.MetNorwayApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.metnorway.MetNorwayRepository +import com.pranshulgg.weather_master_app.core.network.sources.weather.nws.NwsApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.nws.NwsRepository +import com.pranshulgg.weather_master_app.core.network.sources.weather.openmeteo.OpenMeteoApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.openmeteo.OpenMeteoRepository +import com.pranshulgg.weather_master_app.core.network.sources.weather.smhi.SmhiApi +import com.pranshulgg.weather_master_app.core.network.sources.weather.smhi.SmhiRepository +import com.pranshulgg.weather_master_app.data.local.dao.airquality.AirQualityDao +import com.pranshulgg.weather_master_app.data.local.dao.location.LocationsDao +import com.pranshulgg.weather_master_app.data.local.dao.weather.WeatherDao +import com.pranshulgg.weather_master_app.data.local.dao.weather.nws.NwsDao +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object WeatherRepositoryModule { + @Provides + @Singleton + fun provideOpenMeteoRepository( + dao: LocationsDao, + api: OpenMeteoApi, + weatherDao: WeatherDao + ): OpenMeteoRepository = OpenMeteoRepository(dao, weatherDao, api) + + @Provides + @Singleton + fun provideOpenMeteoAqiRepository( + api: OpenMeteoAqiApi, + dao: AirQualityDao + ): OpenMeteoAqiRepository = + OpenMeteoAqiRepository(api, dao) + + @Provides + @Singleton + fun provideNwsRepository( + api: NwsApi, + dao: LocationsDao, + weatherDao: WeatherDao, + nwsDao: NwsDao + ): NwsRepository = NwsRepository(dao, weatherDao, nwsDao, api) + + @Provides + @Singleton + fun provideMetNorwayRepository( + dao: LocationsDao, + api: MetNorwayApi, + weatherDao: WeatherDao + ): MetNorwayRepository = MetNorwayRepository(dao, weatherDao, api) + + @Provides + @Singleton + fun provideSmhiRepository( + dao: LocationsDao, + api: SmhiApi, + weatherDao: WeatherDao + ): SmhiRepository = SmhiRepository(dao, weatherDao, api) +} \ No newline at end of file