@@ -84,14 +84,22 @@ default Flowable<List<PlaylistStreamEntity>> listByService(final int serviceId)
8484 + " ORDER BY " + PLAYLIST_NAME + " COLLATE NOCASE ASC" )
8585 Flowable <List <PlaylistMetadataEntry >> getPlaylistMetadata ();
8686
87+ @ RewriteQueriesToDropUnusedColumns
8788 @ Transaction
88- @ Query ("DELETE FROM " + PLAYLIST_STREAM_JOIN_TABLE
89- + " WHERE " + JOIN_PLAYLIST_ID + "=:playlistId"
90- + " AND " + JOIN_STREAM_ID + " IN ("
91- + " SELECT " + JOIN_STREAM_ID
89+ @ Query ("SELECT *, MIN(" + JOIN_INDEX + ") FROM " + STREAM_TABLE + " INNER JOIN "
90+ + "(SELECT " + JOIN_STREAM_ID + "," + JOIN_INDEX
9291 + " FROM " + PLAYLIST_STREAM_JOIN_TABLE
93- + " WHERE " + JOIN_PLAYLIST_ID + "=:playlistId"
94- + " GROUP BY " + JOIN_STREAM_ID
95- + " HAVING COUNT(*) > 1 )" )
96- Flowable <List <PlaylistMetadataEntry >> removeDuplicates (long playlistId );
92+ + " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId)"
93+ + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID
94+ + " LEFT JOIN "
95+ + "(SELECT " + JOIN_STREAM_ID + " AS " + JOIN_STREAM_ID_ALIAS + ", "
96+ + STREAM_PROGRESS_MILLIS
97+ + " FROM " + STREAM_STATE_TABLE + " )"
98+ + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID_ALIAS
99+ + " GROUP BY " + STREAM_ID
100+ + " ORDER BY " + JOIN_INDEX + " ASC" )
101+ Flowable <List <PlaylistStreamEntry >> getStreamsWithoutDuplicates (long playlistId );
102+
103+
104+
97105}
0 commit comments