Skip to content

Commit 807b6da

Browse files
committed
Implement cached pagination for now playing movies, now playing tv shows, top rated tv shows.
1 parent b34346a commit 807b6da

53 files changed

Lines changed: 762 additions & 408 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/src/main/kotlin/com/adesso/movee/data/local/database/MainDatabase.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,24 @@ import com.adesso.movee.data.local.database.dao.MovieGenreCrossRefDao
77
import com.adesso.movee.data.local.database.dao.MovieGenreDao
88
import com.adesso.movee.data.local.database.dao.NowPlayingMovieDao
99
import com.adesso.movee.data.local.database.dao.NowPlayingMovieIdPageDao
10-
import com.adesso.movee.data.local.database.dao.NowPlayingTvShowIdDao
10+
import com.adesso.movee.data.local.database.dao.NowPlayingTvShowDao
11+
import com.adesso.movee.data.local.database.dao.NowPlayingTvShowIdPageDao
1112
import com.adesso.movee.data.local.database.dao.PopularMovieDao
1213
import com.adesso.movee.data.local.database.dao.PopularMovieIdPageDao
13-
import com.adesso.movee.data.local.database.dao.TopRatedTvShowIdDao
14-
import com.adesso.movee.data.local.database.dao.TvShowDao
14+
import com.adesso.movee.data.local.database.dao.TopRatedTvShowDao
15+
import com.adesso.movee.data.local.database.dao.TopRatedTvShowIdPageDao
1516
import com.adesso.movee.data.local.database.dao.TvShowGenreCrossRefDao
1617
import com.adesso.movee.data.local.database.dao.TvShowGenreDao
1718
import com.adesso.movee.data.local.database.entity.MovieGenreCrossRefEntity
1819
import com.adesso.movee.data.local.database.entity.MovieGenreEntity
1920
import com.adesso.movee.data.local.database.entity.NowPlayingMovieEntity
2021
import com.adesso.movee.data.local.database.entity.NowPlayingMovieIdPageEntity
21-
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowIdEntity
22+
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowEntity
23+
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowIdPageEntity
2224
import com.adesso.movee.data.local.database.entity.PopularMovieEntity
2325
import com.adesso.movee.data.local.database.entity.PopularMovieIdPageEntity
24-
import com.adesso.movee.data.local.database.entity.TopRatedTvShowIdEntity
25-
import com.adesso.movee.data.local.database.entity.TvShowEntity
26+
import com.adesso.movee.data.local.database.entity.TopRatedTvShowEntity
27+
import com.adesso.movee.data.local.database.entity.TopRatedTvShowIdPageEntity
2628
import com.adesso.movee.data.local.database.entity.TvShowGenreCrossRefEntity
2729
import com.adesso.movee.data.local.database.entity.TvShowGenreEntity
2830
import com.adesso.movee.internal.util.typeconverter.DateTypeConverter
@@ -36,13 +38,14 @@ import com.adesso.movee.internal.util.typeconverter.GenreConverter
3638
NowPlayingMovieIdPageEntity::class,
3739
MovieGenreEntity::class,
3840
MovieGenreCrossRefEntity::class,
39-
TvShowEntity::class,
40-
TopRatedTvShowIdEntity::class,
41-
NowPlayingTvShowIdEntity::class,
41+
NowPlayingTvShowEntity::class,
42+
NowPlayingTvShowIdPageEntity::class,
43+
TopRatedTvShowEntity::class,
44+
TopRatedTvShowIdPageEntity::class,
4245
TvShowGenreEntity::class,
4346
TvShowGenreCrossRefEntity::class
4447
],
45-
version = 3
48+
version = 4
4649
)
4750
@TypeConverters(
4851
DateTypeConverter::class,
@@ -57,9 +60,10 @@ abstract class MainDatabase : RoomDatabase() {
5760
abstract fun movieGenreDao(): MovieGenreDao
5861
abstract fun movieGenreCrossRefDao(): MovieGenreCrossRefDao
5962

60-
abstract fun tvShowDao(): TvShowDao
61-
abstract fun topRatedTvShowIdDao(): TopRatedTvShowIdDao
62-
abstract fun nowPlayingTvShowIdDao(): NowPlayingTvShowIdDao
63+
abstract fun topRatedTvShowDao(): TopRatedTvShowDao
64+
abstract fun nowPlayingTvShowDao(): NowPlayingTvShowDao
65+
abstract fun topRatedTvShowIdPageDao(): TopRatedTvShowIdPageDao
66+
abstract fun nowPlayingTvShowIdPageDao(): NowPlayingTvShowIdPageDao
6367
abstract fun tvShowGenreDao(): TvShowGenreDao
6468
abstract fun tvShowGenreCrossRefDao(): TvShowGenreCrossRefDao
6569
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/NowPlayingMovieDao.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,11 @@ import com.adesso.movee.data.local.database.entity.NowPlayingMovieWithGenres
1010
@Dao
1111
abstract class NowPlayingMovieDao : BaseDao<NowPlayingMovieEntity> {
1212

13-
@Transaction
14-
@Query("SELECT * FROM now_playing_movie WHERE id IN (:movieIds)")
15-
abstract suspend fun getMoviesWithGenresByIds(movieIds: List<Long>):
16-
List<NowPlayingMovieWithGenres>
17-
1813
@Transaction
1914
@Query("SELECT * FROM now_playing_movie")
20-
abstract fun getMoviesWithGenresPagingSource(): PagingSource<Int, NowPlayingMovieWithGenres>
15+
abstract fun getPagingSource(): PagingSource<Int, NowPlayingMovieWithGenres>
2116

2217
@Transaction
2318
@Query("DELETE FROM now_playing_movie")
24-
abstract fun clearNowPlayingMoviesWithGenres()
19+
abstract suspend fun clear()
2520
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/NowPlayingMovieIdPageDao.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import com.adesso.movee.data.local.database.entity.TABLE_NOW_PLAYING_MOVIE_ID_PA
88
@Dao
99
abstract class NowPlayingMovieIdPageDao : BaseDao<NowPlayingMovieIdPageEntity> {
1010

11-
@Query("SELECT id FROM $TABLE_NOW_PLAYING_MOVIE_ID_PAGE")
12-
abstract suspend fun getIds(): List<Long>
11+
@Query("SELECT page FROM $TABLE_NOW_PLAYING_MOVIE_ID_PAGE")
12+
abstract suspend fun getPages(): List<Int>
1313

1414
@Query("DELETE FROM $TABLE_NOW_PLAYING_MOVIE_ID_PAGE")
15-
abstract fun clearNowPlayingMovieIds()
15+
abstract suspend fun clear()
1616
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.adesso.movee.data.local.database.dao
2+
3+
import androidx.paging.PagingSource
4+
import androidx.room.Dao
5+
import androidx.room.Query
6+
import androidx.room.Transaction
7+
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowEntity
8+
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowWithGenres
9+
10+
@Dao
11+
abstract class NowPlayingTvShowDao : BaseDao<NowPlayingTvShowEntity> {
12+
13+
@Transaction
14+
@Query("SELECT * FROM now_playing_tv_show")
15+
abstract fun getPagingSource(): PagingSource<Int, NowPlayingTvShowWithGenres>
16+
17+
@Transaction
18+
@Query("DELETE FROM now_playing_tv_show")
19+
abstract suspend fun clear()
20+
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/NowPlayingTvShowIdDao.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.adesso.movee.data.local.database.dao
2+
3+
import androidx.room.Dao
4+
import androidx.room.Query
5+
import com.adesso.movee.data.local.database.entity.NowPlayingTvShowIdPageEntity
6+
import com.adesso.movee.data.local.database.entity.TABLE_NOW_PLAYING_TV_SHOW_ID_PAGE
7+
8+
@Dao
9+
abstract class NowPlayingTvShowIdPageDao : BaseDao<NowPlayingTvShowIdPageEntity> {
10+
11+
@Query("SELECT page FROM $TABLE_NOW_PLAYING_TV_SHOW_ID_PAGE")
12+
abstract suspend fun getPages(): List<Int>
13+
14+
@Query("DELETE FROM $TABLE_NOW_PLAYING_TV_SHOW_ID_PAGE")
15+
abstract suspend fun clear()
16+
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/PopularMovieDao.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,11 @@ import com.adesso.movee.data.local.database.entity.PopularMovieWithGenres
1010
@Dao
1111
abstract class PopularMovieDao : BaseDao<PopularMovieEntity> {
1212

13-
@Transaction
14-
@Query("SELECT * FROM popular_movie WHERE id IN (:movieIds)")
15-
abstract suspend fun getMoviesWithGenresByIds(movieIds: List<Long>):
16-
List<PopularMovieWithGenres>
17-
1813
@Transaction
1914
@Query("SELECT * FROM popular_movie")
20-
abstract fun getMoviesWithGenresPagingSource(): PagingSource<Int, PopularMovieWithGenres>
15+
abstract fun getPagingSource(): PagingSource<Int, PopularMovieWithGenres>
2116

2217
@Transaction
2318
@Query("DELETE FROM popular_movie")
24-
abstract fun clearPopularMoviesWithGenres()
19+
abstract suspend fun clear()
2520
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/PopularMovieIdPageDao.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@ import com.adesso.movee.data.local.database.entity.TABLE_POPULAR_MOVIE_ID_PAGE
88
@Dao
99
abstract class PopularMovieIdPageDao : BaseDao<PopularMovieIdPageEntity> {
1010

11-
@Query("SELECT id FROM $TABLE_POPULAR_MOVIE_ID_PAGE")
12-
abstract suspend fun getIds(): List<Long>
13-
1411
@Query("SELECT page FROM $TABLE_POPULAR_MOVIE_ID_PAGE")
15-
abstract suspend fun getPopularMoviePages(): List<Int>
12+
abstract suspend fun getPages(): List<Int>
1613

1714
@Query("DELETE FROM $TABLE_POPULAR_MOVIE_ID_PAGE")
18-
abstract fun clearPopularMovieIds()
15+
abstract suspend fun clear()
1916
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.adesso.movee.data.local.database.dao
2+
3+
import androidx.paging.PagingSource
4+
import androidx.room.Dao
5+
import androidx.room.Query
6+
import androidx.room.Transaction
7+
import com.adesso.movee.data.local.database.entity.TopRatedTvShowEntity
8+
import com.adesso.movee.data.local.database.entity.TopRatedTvShowWithGenres
9+
10+
@Dao
11+
abstract class TopRatedTvShowDao : BaseDao<TopRatedTvShowEntity> {
12+
13+
@Transaction
14+
@Query("SELECT * FROM top_rated_tv_show")
15+
abstract fun getPagingSource(): PagingSource<Int, TopRatedTvShowWithGenres>
16+
17+
@Transaction
18+
@Query("DELETE FROM top_rated_tv_show")
19+
abstract suspend fun clear()
20+
}

app/src/main/kotlin/com/adesso/movee/data/local/database/dao/TopRatedTvShowIdDao.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)