
Schema 설계 및 최소한의 API 작업을 진행 했습니다.
model User {
id Int @id @default(autoincrement())
email String @unique
nickname String @unique
password String
createdAt DateTime @default(now())
level Level @relation(fields: [levelId], references: [id])
levelId Int @default(1)
curExperience Int @default(0)
todos Todo[]
}
model Level {
id Int @id @default(autoincrement())
level Int
maxExperience Int
user User[]
}
model Todo {
id Int @id @default(autoincrement())
title String
description String?
priority PRIORITY @default(LOW)
user User @relation(fields: [userId], references: [id])
userId Int
completed Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum PRIORITY {
LOW
MEDIUM
HIGH
}
User와 Todo는 1:M 관계를 설정해주었습니다.
Level과 User도 1:M 관계를 설정해주었습니다.
처음에 설계할 때, 헷갈려서 1:1 관계를 줘야지 했는데, 그렇게 했을 때, 사용자가 1개의 레벨만 갖게되어 같은 레벨에 추가되지 않는 문제를 겪고, 1:M관계로 수정 했습니다.
추후에 Task 또는 Project 같은 Todo를 묶을수 있는 테이블을 추가해볼 예정입니다.
API 명세는 Postman을 이용하여 작성을 해봤습니다.
API 확인하기
다음 게시글에서는 메인, 로그인, 회원가입 페이지를 구현하고,
next-auth를 활용하여 로그인 동작까지 작업한 내용을 포스팅 하려고합니다.