stuff
Docker Build & Publish / build (push) Successful in 1m29s
Docker Build & Publish / push (push) Failing after 9s
Docker Build & Publish / Prune old image versions (push) Has been skipped

This commit is contained in:
Senko-san
2026-07-23 12:01:55 +03:00
parent fb5ce3c708
commit df580578f6
26 changed files with 83894 additions and 1176 deletions
@@ -138,9 +138,22 @@ class SqlAlchemyPlaylistRepository:
async def get_track_total(self, playlist_id: uuid.UUID) -> int:
return await self.track_count(playlist_id)
async def has_track(self, playlist_id: uuid.UUID, track_id: uuid.UUID) -> bool:
row = (
await self._session.execute(
select(PlaylistTrackModel.id).where(
PlaylistTrackModel.playlist_id == playlist_id,
PlaylistTrackModel.track_id == track_id,
)
)
).scalar_one_or_none()
return row is not None
async def add_track(
self, playlist_id: uuid.UUID, track_id: uuid.UUID, *, position: float
) -> None:
if await self.has_track(playlist_id, track_id):
return
row = PlaylistTrackModel(playlist_id=playlist_id, track_id=track_id, position=position)
self._session.add(row)
playlist = await self._session.get(PlaylistModel, playlist_id)
@@ -148,6 +161,26 @@ class SqlAlchemyPlaylistRepository:
playlist.version = playlist.version + 1
await self._session.flush()
async def reorder_tracks(
self, playlist_id: uuid.UUID, ordered_track_ids: list[uuid.UUID]
) -> None:
rows = (
(
await self._session.execute(
select(PlaylistTrackModel).where(PlaylistTrackModel.playlist_id == playlist_id)
)
)
.scalars()
.all()
)
by_track_id = {row.track_id: row for row in rows}
for position, track_id in enumerate(ordered_track_ids, start=1):
by_track_id[track_id].position = float(position)
playlist = await self._session.get(PlaylistModel, playlist_id)
if playlist is not None:
playlist.version = playlist.version + 1
await self._session.flush()
async def remove_track(self, playlist_id: uuid.UUID, track_id: uuid.UUID) -> None:
row = (
await self._session.execute(