Web/CloneCoding

    [ Carrot Market ] #12 - Community - 1

    [ Carrot Market ] #12 - Community - 1

    Models 먼저 동네생활을 위한 데이터 베이스 스키마를 만들어 주겠습니다. 먼저 Community(동네 생활)에서의 형태는 다음과 같습니다. 이를 하나의 Post라고 하겠습니다. 이 Post의 작성자가 있을 것이고, 이에 대한 답변이 있을 겁니다. 그리고 질문이 있을것이고, 같이 궁금해 하는 사람이 있을 겁니다. 이를 위해서 스키마를 변경해 보도록 하겠습니다. /schema.prisma model User { id Int @id @default(autoincrement()) phone String? @unique email String? @unique name String avatar String? createdAt DateTime @default(now()) updatedAt DateTime @upd..

    [Carrot Market] #11 - PRODUCT - FINISH

    [Carrot Market] #11 - PRODUCT - FINISH

    Product Observe 이제 Product와 관련된 UI를 본격적으로 구축해 보도록 하겠습니다. 먼저 저희는 저번에 prisma Product Model을 생성하고 URL페이지에서 Product들 몇개를 추가해 보았습니다. 그럼 이제 저희가 mock up했던 데이터들을 실제 데이터 들로 치환해 주는 작업을 해주어야 할 것입니다. 그럼 자연스럽게 SWR을 사용하여 전역으로 productData를 관리해야 할것이고, 이 데이터를 가져올 api가 필요합니다. /pages/api/products/index.ts import client from "@libs/client/client"; import withHandler, { ResponseType, } from "@libs/server/withHandler..

    [Carrot Market] #11 PRODUCTS - START

    [Carrot Market] #11 PRODUCTS - START

    Product Model 상품에 대한 정보를 찾아와야 합니다. 따라서 앞으로는 같은 과정을 거칠겁니다. 일단 model을 만들고 -> 데이터베이스를 수정하고 -> mutation을 한 다음 -> 데이터를 가져올 겁니다. ( by useSWR ) 이것을 하기 전에 Prisma Client가 여러번 생성되는 것을 막기 위하여 전역으로 client를 만들고 만약에 있다면 다시 생성하지 않는 방법을 채택하여, 여러번 instance가 생성되지 않게 해보겠습니다. https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices Best practice for instantiating PrismaClient with Next.js..

    [Carrot Market] #10 - AUTHORIZATION

    [Carrot Market] #10 - AUTHORIZATION

    Protected Handlers 다음과 같은 상황을 생각해 봅시다. 로그인도 안한 사용자가 GET /api/users/me을 보낸다고 해 봅시다. 그런데 이는 인가가 되지 않은 사용자 입니다. 당연히 오류가 나겠죠. 이 api에서는 req.session.user가 있어야 prisma client에서 이에 해당하는 user를 찾을 수 있기 대문입니다. 이에 대한 해결방안은 많습니다. 당연히 me.txt에 하나하나씩 req.session.user가 있는지 확인하면 됩니다. 하지만 모든 페이지에서, 이를 하기란 매우 귀찮기 짝이 없을 수 없습니다. 저희는 그래서 withHandler에서 이를 1차로 막고 가자는 생각을 해 볼 수 이씃ㅂ니다. withHandler에서 isPrivate값을 받고, 이가 true..