<aside> 💡 로그인을 해야만 보여지는 우측 사이드바에 노래목록을 렌더링 할 것이다.

</aside>

import { Song } from '@/types';
import { createServerComponentClient } from '@supabase/auth-helpers-nextjs';
import { cookies } from 'next/headers';

const getSongsByUserId = async (): Promise<Song[]> => {
  const supabase = createServerComponentClient({
    cookies: cookies,
  });
	// userId를 조회하기 위해 session을 가져온다.
  const { data: sessionData, error: sessionError } =
    await supabase.auth.getSession();

  if (sessionError) {
    console.log(sessionError.message);

    return [];
  }

  const { data, error } = await supabase
    .from('songs')
    .select('*')
     // sessionId를 같이 넘긴다.
    .eq('user_id', sessionData.session?.user.id)
    .order('created_at', { ascending: false });

  if (error) {
    console.log(error.message);
  }

  return (data as any) || [];
};

export default getSongsByUserId;

<aside> 💡 즉 로그인을 안해서 session이 없다면 빈 배열을 return 한다.

</aside>

최상단 Layout.tsx(서버컴포넌트)에서 getSongsByUserId action으로 노래 목록을 가져온다.

스크린샷 2023-09-24 오후 10.08.31.png

스크린샷 2023-09-24 오후 10.08.40.png