diff --git a/server/storage.ts b/server/storage.ts index c8fc131..e16257a 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -160,22 +160,11 @@ export class DatabaseStorage implements IStorage { const playlist = await this.getPlaylist(id); if (!playlist) return undefined; - const playlistSongRows = await db.select({ songId: playlistSongs.songId }) - .from(playlistSongs) - .where(eq(playlistSongs.playlistId, id)); - - const songIds = playlistSongRows.map(r => r.songId).filter(id => typeof id === 'number' && !isNaN(id)); - - if (songIds.length === 0) { - return { ...playlist, songs: [] }; - } - - const songsResult = await db.select() + const songsList = await db.select(getTableColumns(songs)) .from(songs) - .where(inArray(songs.id, songIds)); - - const songMap = new Map(songsResult.map(s => [s.id, s])); - const songsList = songIds.map(id => songMap.get(id)).filter((s): s is Song => !!s); + .innerJoin(playlistSongs, eq(songs.id, playlistSongs.songId)) + .where(eq(playlistSongs.playlistId, id)) + .orderBy(playlistSongs.addedAt); return { ...playlist, songs: songsList }; }