Rolled back complexity of _tracks_where
This commit is contained in:
parent
83f5ad5303
commit
e03e64542f
@ -129,12 +129,10 @@ def remove_colour_substring(text: str) -> str:
|
||||
|
||||
# Track functions
|
||||
@log_call
|
||||
def _tracks_where(
|
||||
query: BinaryExpression | ColumnElement[bool],
|
||||
def _tracks_where(query: BinaryExpression | ColumnElement[bool],) -> list[TrackDTO]:
|
||||
"""
|
||||
filter_by_last_played: bool = False,
|
||||
last_played_before: dt.datetime | None = None,
|
||||
) -> list[TrackDTO]:
|
||||
"""
|
||||
Return tracks selected by query
|
||||
"""
|
||||
|
||||
@ -150,36 +148,23 @@ def _tracks_where(
|
||||
.group_by(LatestPlaydate.track_id)
|
||||
.subquery()
|
||||
)
|
||||
if not filter_by_last_played:
|
||||
query = query.outerjoin(
|
||||
latest_playdate_subq, Tracks.id == latest_playdate_subq.c.track_id
|
||||
stmt = (
|
||||
select(
|
||||
Tracks.id.label("track_id"),
|
||||
Tracks.artist,
|
||||
Tracks.bitrate,
|
||||
Tracks.duration,
|
||||
Tracks.fade_at,
|
||||
Tracks.intro,
|
||||
Tracks.path,
|
||||
Tracks.silence_at,
|
||||
Tracks.start_gap,
|
||||
Tracks.title,
|
||||
latest_playdate_subq.c.lastplayed,
|
||||
)
|
||||
else:
|
||||
# We are filtering by last played. If last_played_before is None,
|
||||
# we want tracks that have never been played
|
||||
if last_played_before is None:
|
||||
query = query.outerjoin(Playdates, Tracks.id == Playdates.track_id).where(
|
||||
Playdates.id.is_(None)
|
||||
)
|
||||
else:
|
||||
query = query.join(
|
||||
latest_playdate_subq, Tracks.id == latest_playdate_subq.c.track_id
|
||||
).where(latest_playdate_subq.c.max_last_played < last_played_before)
|
||||
pass
|
||||
|
||||
stmt = select(
|
||||
Tracks.id.label("track_id"),
|
||||
Tracks.artist,
|
||||
Tracks.bitrate,
|
||||
Tracks.duration,
|
||||
Tracks.fade_at,
|
||||
Tracks.intro,
|
||||
Tracks.path,
|
||||
Tracks.silence_at,
|
||||
Tracks.start_gap,
|
||||
Tracks.title,
|
||||
latest_playdate_subq.c.lastplayed,
|
||||
).where(query)
|
||||
.outerjoin(latest_playdate_subq, Tracks.id == latest_playdate_subq.c.track_id)
|
||||
.where(query)
|
||||
)
|
||||
|
||||
results: list[TrackDTO] = []
|
||||
|
||||
@ -335,6 +320,8 @@ def get_filtered_tracks(filter: Filter) -> list[TrackDTO]:
|
||||
Return tracks matching filter
|
||||
"""
|
||||
|
||||
with db.Session() as session:
|
||||
return Tracks.get_filtered_tracks(session, Filter)
|
||||
# Create a base query
|
||||
query = Tracks.id > 0
|
||||
|
||||
@ -903,7 +890,7 @@ def get_playlist_row(playlistrow_id: int) -> PlaylistRowDTO | None:
|
||||
note=record.note,
|
||||
played=record.played,
|
||||
playlist_id=record.playlist_id,
|
||||
playlistrow_id=record.playlistrow_id,
|
||||
playlistrow_id=record.id,
|
||||
row_number=record.row_number,
|
||||
track=track,
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user