mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	Add progressTime field to some stream entries (database)
This commit is contained in:
		| @@ -20,6 +20,9 @@ import static org.schabi.newpipe.database.stream.StreamStatisticsEntry.STREAM_LA | ||||
| import static org.schabi.newpipe.database.stream.StreamStatisticsEntry.STREAM_WATCH_COUNT; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_ID; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_TABLE; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.JOIN_STREAM_ID_ALIAS; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_PROGRESS_TIME; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_STATE_TABLE; | ||||
|  | ||||
| @Dao | ||||
| public abstract class StreamHistoryDAO implements HistoryDAO<StreamHistoryEntity> { | ||||
| @@ -73,6 +76,12 @@ public abstract class StreamHistoryDAO implements HistoryDAO<StreamHistoryEntity | ||||
|             + "  SUM(" + STREAM_REPEAT_COUNT + ") AS " + STREAM_WATCH_COUNT | ||||
|             + " FROM " + STREAM_HISTORY_TABLE + " GROUP BY " + JOIN_STREAM_ID + ")" | ||||
|  | ||||
|             + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID) | ||||
|             + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID | ||||
|  | ||||
|             + " LEFT JOIN " | ||||
|             + "(SELECT " + JOIN_STREAM_ID + " AS " + JOIN_STREAM_ID_ALIAS + ", " | ||||
|             +  STREAM_PROGRESS_TIME | ||||
|             + " FROM " + STREAM_STATE_TABLE + " )" | ||||
|             + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID_ALIAS) | ||||
|     public abstract Flowable<List<StreamStatisticsEntry>> getStatistics(); | ||||
| } | ||||
|   | ||||
| @@ -5,12 +5,16 @@ import androidx.room.Embedded | ||||
| import org.schabi.newpipe.database.LocalItem | ||||
| import org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity | ||||
| import org.schabi.newpipe.database.stream.model.StreamEntity | ||||
| import org.schabi.newpipe.database.stream.model.StreamStateEntity | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem | ||||
|  | ||||
| class PlaylistStreamEntry( | ||||
|     @Embedded | ||||
|     val streamEntity: StreamEntity, | ||||
|  | ||||
|     @ColumnInfo(name = StreamStateEntity.STREAM_PROGRESS_TIME, defaultValue = "0") | ||||
|     val progressTime: Long, | ||||
|  | ||||
|     @ColumnInfo(name = PlaylistStreamEntity.JOIN_STREAM_ID) | ||||
|     val streamId: Long, | ||||
|  | ||||
|   | ||||
| @@ -24,6 +24,9 @@ import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.JO | ||||
| import static org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity.PLAYLIST_STREAM_JOIN_TABLE; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_ID; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamEntity.STREAM_TABLE; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.JOIN_STREAM_ID_ALIAS; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_PROGRESS_TIME; | ||||
| import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_STATE_TABLE; | ||||
|  | ||||
| @Dao | ||||
| public abstract class PlaylistStreamDAO implements BasicDAO<PlaylistStreamEntity> { | ||||
| @@ -58,6 +61,13 @@ public abstract class PlaylistStreamDAO implements BasicDAO<PlaylistStreamEntity | ||||
|  | ||||
|             // then merge with the stream metadata | ||||
|             + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID | ||||
|  | ||||
|             + " LEFT JOIN " | ||||
|             + "(SELECT " + JOIN_STREAM_ID + " AS " + JOIN_STREAM_ID_ALIAS + ", " | ||||
|             +  STREAM_PROGRESS_TIME | ||||
|             + " FROM " + STREAM_STATE_TABLE + " )" | ||||
|             + " ON " + STREAM_ID + " = " + JOIN_STREAM_ID_ALIAS | ||||
|  | ||||
|             + " ORDER BY " + JOIN_INDEX + " ASC") | ||||
|     public abstract Flowable<List<PlaylistStreamEntry>> getOrderedStreamsOf(long playlistId); | ||||
|  | ||||
|   | ||||
| @@ -2,23 +2,27 @@ package org.schabi.newpipe.database.stream | ||||
|  | ||||
| import androidx.room.ColumnInfo | ||||
| import androidx.room.Embedded | ||||
| import java.time.OffsetDateTime | ||||
| import org.schabi.newpipe.database.LocalItem | ||||
| import org.schabi.newpipe.database.history.model.StreamHistoryEntity | ||||
| import org.schabi.newpipe.database.stream.model.StreamEntity | ||||
| import org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_PROGRESS_TIME | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem | ||||
| import java.time.OffsetDateTime | ||||
|  | ||||
| class StreamStatisticsEntry( | ||||
|         @Embedded | ||||
|     @Embedded | ||||
|     val streamEntity: StreamEntity, | ||||
|  | ||||
|         @ColumnInfo(name = StreamHistoryEntity.JOIN_STREAM_ID) | ||||
|     @ColumnInfo(name = STREAM_PROGRESS_TIME, defaultValue = "0") | ||||
|     val progressTime: Long, | ||||
|  | ||||
|     @ColumnInfo(name = StreamHistoryEntity.JOIN_STREAM_ID) | ||||
|     val streamId: Long, | ||||
|  | ||||
|         @ColumnInfo(name = STREAM_LATEST_DATE) | ||||
|     @ColumnInfo(name = STREAM_LATEST_DATE) | ||||
|     val latestAccessDate: OffsetDateTime, | ||||
|  | ||||
|         @ColumnInfo(name = STREAM_WATCH_COUNT) | ||||
|     @ColumnInfo(name = STREAM_WATCH_COUNT) | ||||
|     val watchCount: Long | ||||
| ) : LocalItem { | ||||
|     fun toStreamInfoItem(): StreamInfoItem { | ||||
|   | ||||
| @@ -22,6 +22,9 @@ import static org.schabi.newpipe.database.stream.model.StreamStateEntity.STREAM_ | ||||
| public class StreamStateEntity { | ||||
|     public static final String STREAM_STATE_TABLE = "stream_state"; | ||||
|     public static final String JOIN_STREAM_ID = "stream_id"; | ||||
|     // This additional field is required for the SQL query because 'stream_id' is used | ||||
|     // for some other joins already | ||||
|     public static final String JOIN_STREAM_ID_ALIAS = "stream_id_alias"; | ||||
|     public static final String STREAM_PROGRESS_TIME = "progress_time"; | ||||
|  | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 vkay94
					vkay94