<aside> 💡
무조건 layout.tsx
가 실행되고 page.tsx
가 실행된다.
</aside>
첫번째로는 제일 최상단에있는 layout.tsx
가 실행된다. ⇒ children
그리고나서 (root)
폴더안에 있는 layout.tsx
가 실행된다. (왜? (root)폴더 하위에는 특정 url로 매칭되는 폴더가 없음 즉 ‘/’로 접근하면 실행되는 것)
(root)
폴더 안에 있는 layout.tsx
에서는
clerk
의 auth
메서드를 통해 userId
가 있는지 확인을 한다.
userId
없으면 sign-in 페이지로 리다이렉트한
다.
userId
있으면 userId
로 prisma를 통해 이 유저가 상점 정보가 있는지 db를 통해 가져온다.
// 유저 아이디만 가지고, 상점정보들중 첫번째 녀석을 가져옴
const store = await prismadb.store.findFirst({
where: {
userId,
},
});
redirect(
${store.id})
로 리다이렉트 시킨다.
(dashboard)
폴더에 하위의 [storeId]
폴더 하위의 layout.tsx
가 실행된다.
clerk
의 auth
메서드를 통해 userId
가 있는지 확인을 한다.userId
가 없다면, sign-in 페이지로 리다이렉트userId
가 있다면, 최초 root에서 url로 넘긴 params
(store.id 로 url에서 받아온)로 부터 storeID를 받아오고 prisma
를 통해 특정 id에 대한 상점정보를 받아온다.store
가 없다면, 루트 페이지로 리다이렉트<aside> 💡 유저가 하나의 상점정보라도 등록해 놓았다면, 해당 상점 dashboard를 렌더링해준다. 만약 하나도 등록이 안되있었다면, 등록 모달을 띄운다.
</aside>
npx prisma migrate reset
npx prisma generate
npx prisma db push