refactor: generate kotlin code for dao

This commit is contained in:
Jarne Demeulemeester 2023-10-28 15:15:51 +02:00
parent 8b747bf037
commit 75d2b835db
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
4 changed files with 78 additions and 77 deletions

View file

@ -25,6 +25,6 @@ object DatabaseModule {
.fallbackToDestructiveMigration() .fallbackToDestructiveMigration()
.allowMainThreadQueries() .allowMainThreadQueries()
.build() .build()
.serverDatabaseDao .getServerDatabaseDao()
} }
} }

View file

@ -21,6 +21,7 @@ android {
ksp { ksp {
arg("room.schemaLocation", "$projectDir/schemas") arg("room.schemaLocation", "$projectDir/schemas")
arg("room.generateKotlin", "true")
} }
} }

View file

@ -26,5 +26,5 @@ import dev.jdtech.jellyfin.models.User
) )
@TypeConverters(Converters::class) @TypeConverters(Converters::class)
abstract class ServerDatabase : RoomDatabase() { abstract class ServerDatabase : RoomDatabase() {
abstract val serverDatabaseDao: ServerDatabaseDao abstract fun getServerDatabaseDao(): ServerDatabaseDao
} }

View file

@ -24,210 +24,210 @@ import dev.jdtech.jellyfin.models.User
import java.util.UUID import java.util.UUID
@Dao @Dao
abstract class ServerDatabaseDao { interface ServerDatabaseDao {
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertServer(server: Server) fun insertServer(server: Server)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertServerAddress(address: ServerAddress) fun insertServerAddress(address: ServerAddress)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertUser(user: User) fun insertUser(user: User)
@Update @Update
abstract fun update(server: Server) fun update(server: Server)
@Query("SELECT * FROM servers WHERE id = :id") @Query("SELECT * FROM servers WHERE id = :id")
abstract fun get(id: String): Server? fun get(id: String): Server?
@Query("SELECT * FROM users WHERE id = :id") @Query("SELECT * FROM users WHERE id = :id")
abstract fun getUser(id: UUID): User? fun getUser(id: UUID): User?
@Transaction @Transaction
@Query("SELECT * FROM servers WHERE id = :id") @Query("SELECT * FROM servers WHERE id = :id")
abstract fun getServerWithAddresses(id: String): ServerWithAddresses fun getServerWithAddresses(id: String): ServerWithAddresses
@Transaction @Transaction
@Query("SELECT * FROM servers WHERE id = :id") @Query("SELECT * FROM servers WHERE id = :id")
abstract fun getServerWithUsers(id: String): ServerWithUsers fun getServerWithUsers(id: String): ServerWithUsers
@Transaction @Transaction
@Query("SELECT * FROM servers WHERE id = :id") @Query("SELECT * FROM servers WHERE id = :id")
abstract fun getServerWithAddressesAndUsers(id: String): ServerWithAddressesAndUsers? fun getServerWithAddressesAndUsers(id: String): ServerWithAddressesAndUsers?
@Query("DELETE FROM servers") @Query("DELETE FROM servers")
abstract fun clear() fun clear()
@Query("SELECT * FROM servers") @Query("SELECT * FROM servers")
abstract fun getAllServersSync(): List<Server> fun getAllServersSync(): List<Server>
@Query("SELECT COUNT(*) FROM servers") @Query("SELECT COUNT(*) FROM servers")
abstract fun getServersCount(): Int fun getServersCount(): Int
@Query("DELETE FROM servers WHERE id = :id") @Query("DELETE FROM servers WHERE id = :id")
abstract fun delete(id: String) fun delete(id: String)
@Query("DELETE FROM users WHERE id = :id") @Query("DELETE FROM users WHERE id = :id")
abstract fun deleteUser(id: UUID) fun deleteUser(id: UUID)
@Query("DELETE FROM serverAddresses WHERE id = :id") @Query("DELETE FROM serverAddresses WHERE id = :id")
abstract fun deleteServerAddress(id: UUID) fun deleteServerAddress(id: UUID)
@Query("UPDATE servers SET currentUserId = :userId WHERE id = :serverId") @Query("UPDATE servers SET currentUserId = :userId WHERE id = :serverId")
abstract fun updateServerCurrentUser(serverId: String, userId: UUID) fun updateServerCurrentUser(serverId: String, userId: UUID)
@Query("SELECT * FROM users WHERE id = (SELECT currentUserId FROM servers WHERE id = :serverId)") @Query("SELECT * FROM users WHERE id = (SELECT currentUserId FROM servers WHERE id = :serverId)")
abstract fun getServerCurrentUser(serverId: String): User? fun getServerCurrentUser(serverId: String): User?
@Query("SELECT * FROM serverAddresses WHERE id = (SELECT currentServerAddressId FROM servers WHERE id = :serverId)") @Query("SELECT * FROM serverAddresses WHERE id = (SELECT currentServerAddressId FROM servers WHERE id = :serverId)")
abstract fun getServerCurrentAddress(serverId: String): ServerAddress? fun getServerCurrentAddress(serverId: String): ServerAddress?
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
abstract fun insertMovie(movie: FindroidMovieDto) fun insertMovie(movie: FindroidMovieDto)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertSource(source: FindroidSourceDto) fun insertSource(source: FindroidSourceDto)
@Query("SELECT * FROM movies WHERE id = :id") @Query("SELECT * FROM movies WHERE id = :id")
abstract fun getMovie(id: UUID): FindroidMovieDto fun getMovie(id: UUID): FindroidMovieDto
@Query("SELECT * FROM movies JOIN sources ON movies.id = sources.itemId ORDER BY movies.name ASC") @Query("SELECT * FROM movies JOIN sources ON movies.id = sources.itemId ORDER BY movies.name ASC")
abstract fun getMoviesAndSources(): Map<FindroidMovieDto, List<FindroidSourceDto>> fun getMoviesAndSources(): Map<FindroidMovieDto, List<FindroidSourceDto>>
@Query("SELECT * FROM sources WHERE itemId = :itemId") @Query("SELECT * FROM sources WHERE itemId = :itemId")
abstract fun getSources(itemId: UUID): List<FindroidSourceDto> fun getSources(itemId: UUID): List<FindroidSourceDto>
@Query("SELECT * FROM sources WHERE downloadId = :downloadId") @Query("SELECT * FROM sources WHERE downloadId = :downloadId")
abstract fun getSourceByDownloadId(downloadId: Long): FindroidSourceDto? fun getSourceByDownloadId(downloadId: Long): FindroidSourceDto?
@Query("UPDATE sources SET downloadId = :downloadId WHERE id = :id") @Query("UPDATE sources SET downloadId = :downloadId WHERE id = :id")
abstract fun setSourceDownloadId(id: String, downloadId: Long) fun setSourceDownloadId(id: String, downloadId: Long)
@Query("UPDATE sources SET path = :path WHERE id = :id") @Query("UPDATE sources SET path = :path WHERE id = :id")
abstract fun setSourcePath(id: String, path: String) fun setSourcePath(id: String, path: String)
@Query("DELETE FROM sources WHERE id = :id") @Query("DELETE FROM sources WHERE id = :id")
abstract fun deleteSource(id: String) fun deleteSource(id: String)
@Query("DELETE FROM movies WHERE id = :id") @Query("DELETE FROM movies WHERE id = :id")
abstract fun deleteMovie(id: UUID) fun deleteMovie(id: UUID)
@Query("UPDATE userdata SET playbackPositionTicks = :playbackPositionTicks WHERE itemId = :itemId AND userid = :userId") @Query("UPDATE userdata SET playbackPositionTicks = :playbackPositionTicks WHERE itemId = :itemId AND userid = :userId")
abstract fun setPlaybackPositionTicks(itemId: UUID, userId: UUID, playbackPositionTicks: Long) fun setPlaybackPositionTicks(itemId: UUID, userId: UUID, playbackPositionTicks: Long)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertMediaStream(mediaStream: FindroidMediaStreamDto) fun insertMediaStream(mediaStream: FindroidMediaStreamDto)
@Query("SELECT * FROM mediastreams WHERE sourceId = :sourceId") @Query("SELECT * FROM mediastreams WHERE sourceId = :sourceId")
abstract fun getMediaStreamsBySourceId(sourceId: String): List<FindroidMediaStreamDto> fun getMediaStreamsBySourceId(sourceId: String): List<FindroidMediaStreamDto>
@Query("SELECT * FROM mediastreams WHERE downloadId = :downloadId") @Query("SELECT * FROM mediastreams WHERE downloadId = :downloadId")
abstract fun getMediaStreamByDownloadId(downloadId: Long): FindroidMediaStreamDto? fun getMediaStreamByDownloadId(downloadId: Long): FindroidMediaStreamDto?
@Query("UPDATE mediastreams SET downloadId = :downloadId WHERE id = :id") @Query("UPDATE mediastreams SET downloadId = :downloadId WHERE id = :id")
abstract fun setMediaStreamDownloadId(id: UUID, downloadId: Long) fun setMediaStreamDownloadId(id: UUID, downloadId: Long)
@Query("UPDATE mediastreams SET path = :path WHERE id = :id") @Query("UPDATE mediastreams SET path = :path WHERE id = :id")
abstract fun setMediaStreamPath(id: UUID, path: String) fun setMediaStreamPath(id: UUID, path: String)
@Query("DELETE FROM mediastreams WHERE id = :id") @Query("DELETE FROM mediastreams WHERE id = :id")
abstract fun deleteMediaStream(id: UUID) fun deleteMediaStream(id: UUID)
@Query("DELETE FROM mediastreams WHERE sourceId = :sourceId") @Query("DELETE FROM mediastreams WHERE sourceId = :sourceId")
abstract fun deleteMediaStreamsBySourceId(sourceId: String) fun deleteMediaStreamsBySourceId(sourceId: String)
@Query("UPDATE userdata SET played = :played WHERE userId = :userId AND itemId = :itemId") @Query("UPDATE userdata SET played = :played WHERE userId = :userId AND itemId = :itemId")
abstract fun setPlayed(userId: UUID, itemId: UUID, played: Boolean) fun setPlayed(userId: UUID, itemId: UUID, played: Boolean)
@Query("UPDATE userdata SET favorite = :favorite WHERE userId = :userId AND itemId = :itemId") @Query("UPDATE userdata SET favorite = :favorite WHERE userId = :userId AND itemId = :itemId")
abstract fun setFavorite(userId: UUID, itemId: UUID, favorite: Boolean) fun setFavorite(userId: UUID, itemId: UUID, favorite: Boolean)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertTrickPlayManifest(trickPlayManifestDto: TrickPlayManifestDto) fun insertTrickPlayManifest(trickPlayManifestDto: TrickPlayManifestDto)
@Query("SELECT * FROM trickPlayManifests WHERE itemId = :itemId") @Query("SELECT * FROM trickPlayManifests WHERE itemId = :itemId")
abstract fun getTrickPlayManifest(itemId: UUID): TrickPlayManifestDto? fun getTrickPlayManifest(itemId: UUID): TrickPlayManifestDto?
@Query("DELETE FROM trickPlayManifests WHERE itemId = :itemId") @Query("DELETE FROM trickPlayManifests WHERE itemId = :itemId")
abstract fun deleteTrickPlayManifest(itemId: UUID) fun deleteTrickPlayManifest(itemId: UUID)
@Query("SELECT * FROM movies ORDER BY name ASC") @Query("SELECT * FROM movies ORDER BY name ASC")
abstract fun getMovies(): List<FindroidMovieDto> fun getMovies(): List<FindroidMovieDto>
@Query("SELECT * FROM movies WHERE serverId = :serverId ORDER BY name ASC") @Query("SELECT * FROM movies WHERE serverId = :serverId ORDER BY name ASC")
abstract fun getMoviesByServerId(serverId: String): List<FindroidMovieDto> fun getMoviesByServerId(serverId: String): List<FindroidMovieDto>
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
abstract fun insertShow(show: FindroidShowDto) fun insertShow(show: FindroidShowDto)
@Query("SELECT * FROM shows WHERE id = :id") @Query("SELECT * FROM shows WHERE id = :id")
abstract fun getShow(id: UUID): FindroidShowDto fun getShow(id: UUID): FindroidShowDto
@Query("SELECT * FROM shows ORDER BY name ASC") @Query("SELECT * FROM shows ORDER BY name ASC")
abstract fun getShows(): List<FindroidShowDto> fun getShows(): List<FindroidShowDto>
@Query("SELECT * FROM shows WHERE serverId = :serverId ORDER BY name ASC") @Query("SELECT * FROM shows WHERE serverId = :serverId ORDER BY name ASC")
abstract fun getShowsByServerId(serverId: String): List<FindroidShowDto> fun getShowsByServerId(serverId: String): List<FindroidShowDto>
@Query("DELETE FROM shows WHERE id = :id") @Query("DELETE FROM shows WHERE id = :id")
abstract fun deleteShow(id: UUID) fun deleteShow(id: UUID)
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
abstract fun insertSeason(show: FindroidSeasonDto) fun insertSeason(show: FindroidSeasonDto)
@Query("SELECT * FROM seasons WHERE id = :id") @Query("SELECT * FROM seasons WHERE id = :id")
abstract fun getSeason(id: UUID): FindroidSeasonDto fun getSeason(id: UUID): FindroidSeasonDto
@Query("SELECT * FROM seasons WHERE seriesId = :seriesId ORDER BY indexNumber ASC") @Query("SELECT * FROM seasons WHERE seriesId = :seriesId ORDER BY indexNumber ASC")
abstract fun getSeasonsByShowId(seriesId: UUID): List<FindroidSeasonDto> fun getSeasonsByShowId(seriesId: UUID): List<FindroidSeasonDto>
@Query("DELETE FROM seasons WHERE id = :id") @Query("DELETE FROM seasons WHERE id = :id")
abstract fun deleteSeason(id: UUID) fun deleteSeason(id: UUID)
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
abstract fun insertEpisode(episode: FindroidEpisodeDto) fun insertEpisode(episode: FindroidEpisodeDto)
@Query("SELECT * FROM episodes WHERE id = :id") @Query("SELECT * FROM episodes WHERE id = :id")
abstract fun getEpisode(id: UUID): FindroidEpisodeDto fun getEpisode(id: UUID): FindroidEpisodeDto
@Query("SELECT * FROM episodes WHERE seriesId = :seriesId ORDER BY parentIndexNumber ASC, indexNumber ASC") @Query("SELECT * FROM episodes WHERE seriesId = :seriesId ORDER BY parentIndexNumber ASC, indexNumber ASC")
abstract fun getEpisodesByShowId(seriesId: UUID): List<FindroidEpisodeDto> fun getEpisodesByShowId(seriesId: UUID): List<FindroidEpisodeDto>
@Query("SELECT * FROM episodes WHERE seasonId = :seasonId ORDER BY indexNumber ASC") @Query("SELECT * FROM episodes WHERE seasonId = :seasonId ORDER BY indexNumber ASC")
abstract fun getEpisodesBySeasonId(seasonId: UUID): List<FindroidEpisodeDto> fun getEpisodesBySeasonId(seasonId: UUID): List<FindroidEpisodeDto>
@Query("SELECT * FROM episodes WHERE serverId = :serverId ORDER BY seriesName ASC, parentIndexNumber ASC, indexNumber ASC") @Query("SELECT * FROM episodes WHERE serverId = :serverId ORDER BY seriesName ASC, parentIndexNumber ASC, indexNumber ASC")
abstract fun getEpisodesByServerId(serverId: String): List<FindroidEpisodeDto> fun getEpisodesByServerId(serverId: String): List<FindroidEpisodeDto>
@Query("SELECT episodes.id, episodes.serverId, episodes.seasonId, episodes.seriesId, episodes.name, episodes.seriesName, episodes.overview, episodes.indexNumber, episodes.indexNumberEnd, episodes.parentIndexNumber, episodes.runtimeTicks, episodes.premiereDate, episodes.communityRating FROM episodes INNER JOIN userdata ON episodes.id = userdata.itemId WHERE serverId = :serverId AND playbackPositionTicks > 0 ORDER BY episodes.parentIndexNumber ASC, episodes.indexNumber ASC") @Query("SELECT episodes.id, episodes.serverId, episodes.seasonId, episodes.seriesId, episodes.name, episodes.seriesName, episodes.overview, episodes.indexNumber, episodes.indexNumberEnd, episodes.parentIndexNumber, episodes.runtimeTicks, episodes.premiereDate, episodes.communityRating FROM episodes INNER JOIN userdata ON episodes.id = userdata.itemId WHERE serverId = :serverId AND playbackPositionTicks > 0 ORDER BY episodes.parentIndexNumber ASC, episodes.indexNumber ASC")
abstract fun getEpisodeResumeItems(serverId: String): List<FindroidEpisodeDto> fun getEpisodeResumeItems(serverId: String): List<FindroidEpisodeDto>
@Query("DELETE FROM episodes WHERE id = :id") @Query("DELETE FROM episodes WHERE id = :id")
abstract fun deleteEpisode(id: UUID) fun deleteEpisode(id: UUID)
@Query("DELETE FROM episodes WHERE seasonId = :seasonId") @Query("DELETE FROM episodes WHERE seasonId = :seasonId")
abstract fun deleteEpisodesBySeasonId(seasonId: UUID) fun deleteEpisodesBySeasonId(seasonId: UUID)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertIntro(intro: IntroDto) fun insertIntro(intro: IntroDto)
@Query("SELECT * FROM intros WHERE itemId = :itemId") @Query("SELECT * FROM intros WHERE itemId = :itemId")
abstract fun getIntro(itemId: UUID): IntroDto? fun getIntro(itemId: UUID): IntroDto?
@Query("DELETE FROM intros WHERE itemId = :itemId") @Query("DELETE FROM intros WHERE itemId = :itemId")
abstract fun deleteIntro(itemId: UUID) fun deleteIntro(itemId: UUID)
@Query("SELECT * FROM seasons") @Query("SELECT * FROM seasons")
abstract fun getSeasons(): List<FindroidSeasonDto> fun getSeasons(): List<FindroidSeasonDto>
@Query("SELECT * FROM episodes") @Query("SELECT * FROM episodes")
abstract fun getEpisodes(): List<FindroidEpisodeDto> fun getEpisodes(): List<FindroidEpisodeDto>
@Query("SELECT * FROM userdata WHERE itemId = :itemId AND userId = :userId") @Query("SELECT * FROM userdata WHERE itemId = :itemId AND userId = :userId")
abstract fun getUserData(itemId: UUID, userId: UUID): FindroidUserDataDto? fun getUserData(itemId: UUID, userId: UUID): FindroidUserDataDto?
@Transaction @Transaction
open fun getUserDataOrCreateNew(itemId: UUID, userId: UUID): FindroidUserDataDto { fun getUserDataOrCreateNew(itemId: UUID, userId: UUID): FindroidUserDataDto {
var userData = getUserData(itemId, userId) var userData = getUserData(itemId, userId)
// Create user data when there is none // Create user data when there is none
@ -246,23 +246,23 @@ abstract class ServerDatabaseDao {
} }
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertUserData(userData: FindroidUserDataDto) fun insertUserData(userData: FindroidUserDataDto)
@Query("DELETE FROM userdata WHERE itemId = :itemId") @Query("DELETE FROM userdata WHERE itemId = :itemId")
abstract fun deleteUserData(itemId: UUID) fun deleteUserData(itemId: UUID)
@Query("SELECT * FROM userdata WHERE userId = :userId AND itemId = :itemId AND toBeSynced = 1") @Query("SELECT * FROM userdata WHERE userId = :userId AND itemId = :itemId AND toBeSynced = 1")
abstract fun getUserDataToBeSynced(userId: UUID, itemId: UUID): FindroidUserDataDto? fun getUserDataToBeSynced(userId: UUID, itemId: UUID): FindroidUserDataDto?
@Query("UPDATE userdata SET toBeSynced = :toBeSynced WHERE itemId = :itemId AND userId = :userId") @Query("UPDATE userdata SET toBeSynced = :toBeSynced WHERE itemId = :itemId AND userId = :userId")
abstract fun setUserDataToBeSynced(userId: UUID, itemId: UUID, toBeSynced: Boolean) fun setUserDataToBeSynced(userId: UUID, itemId: UUID, toBeSynced: Boolean)
@Query("SELECT * FROM movies WHERE serverId = :serverId AND name LIKE '%' || :name || '%'") @Query("SELECT * FROM movies WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchMovies(serverId: String, name: String): List<FindroidMovieDto> fun searchMovies(serverId: String, name: String): List<FindroidMovieDto>
@Query("SELECT * FROM shows WHERE serverId = :serverId AND name LIKE '%' || :name || '%'") @Query("SELECT * FROM shows WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchShows(serverId: String, name: String): List<FindroidShowDto> fun searchShows(serverId: String, name: String): List<FindroidShowDto>
@Query("SELECT * FROM episodes WHERE serverId = :serverId AND name LIKE '%' || :name || '%'") @Query("SELECT * FROM episodes WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchEpisodes(serverId: String, name: String): List<FindroidEpisodeDto> fun searchEpisodes(serverId: String, name: String): List<FindroidEpisodeDto>
} }