import { cleanPlaylistCard, cleanUserPlaylistCard, getUrlWithProxiedParams, } from '../../../runtime'; import type { IRawPlaylistsUser, IPlaylistCard, IRawPlaylistCard, PaginatedResponse } from '../../../types'; export default defineEventHandler(async (event) => { const apiUrl = process.env.NUXT_PUBLIC_API_DOMAIN; const playlistUrl = getUrlWithProxiedParams(`${apiUrl}/v1/playlist`, event); const myPlaylistByNicheUrl = getUrlWithProxiedParams(`${apiUrl}/v1/playlist/my-list-by-niche`, event); const clientHeaders = event.node.req.headers as HeadersInit; const [playlistRaw, myPlaylistByNicheRaw] = await Promise.all([ apiFetch(playlistUrl, { method: 'GET', headers: clientHeaders, }), apiFetch(myPlaylistByNicheUrl, { method: 'GET', headers: clientHeaders }), ]); const playlist = playlistRaw.data as PaginatedResponse; const myPlaylistByNiche = myPlaylistByNicheRaw.data as PaginatedResponse; const playlistItems: IPlaylistCard[] = playlist?.playlists?.map(cleanUserPlaylistCard); const myPlaylistByNicheItems: IPlaylistCard[] = myPlaylistByNiche?.items?.map(cleanPlaylistCard); const items = playlistItems?.map((item) => { const myPlaylist = myPlaylistByNicheItems?.find( (subItem) => subItem.id === item.id ); return { ...item, views: myPlaylist?.views, searchTags: myPlaylist?.searchTags, likes: myPlaylist?.likes, dislikes: myPlaylist?.dislikes, }; }); return { currentPage: playlist?.currentPage, allPages: playlist?.allPages, total: playlist?.total, items: items, }; });