Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
.env

# Prisma
prisma/migrations
# prisma/migrations

# Logs
logs
Expand Down
202 changes: 202 additions & 0 deletions prisma/migrations/20260217152737_20260218/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
-- CreateTable
CREATE TABLE `TaskPriority` (
`priority_id` INTEGER NOT NULL AUTO_INCREMENT,
`user_id` INTEGER NOT NULL,
`task_id` INTEGER NOT NULL,
`rank` INTEGER NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,

UNIQUE INDEX `TaskPriority_user_id_task_id_key`(`user_id`, `task_id`),
PRIMARY KEY (`priority_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `User` (
`user_id` INTEGER NOT NULL AUTO_INCREMENT,
`nickname` VARCHAR(100) NOT NULL,
`phone_num` VARCHAR(15) NOT NULL,
`email` VARCHAR(50) NOT NULL,
`profile_image` VARCHAR(200) NULL,
`password` VARCHAR(50) NULL,
`provider` ENUM('KAKAO') NULL,
`provider_id` VARCHAR(10) NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,
`deleted_at` DATETIME NULL,
`deadline_alarm` INTEGER NOT NULL DEFAULT 24,
`task_alarm` INTEGER NOT NULL DEFAULT 24,

UNIQUE INDEX `User_email_key`(`email`),
INDEX `User_deleted_at_idx`(`deleted_at`),
UNIQUE INDEX `User_provider_provider_id_key`(`provider`, `provider_id`),
PRIMARY KEY (`user_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `UserAlarm` (
`alarm_id` INTEGER NOT NULL AUTO_INCREMENT,
`user_id` INTEGER NOT NULL,
`task_id` INTEGER NULL,
`sub_task_id` INTEGER NULL,
`title` VARCHAR(50) NOT NULL,
`alarm_content` VARCHAR(50) NOT NULL,
`is_read` BOOLEAN NOT NULL DEFAULT false,
`alarm_date` DATETIME NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`alarm_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Folder` (
`folder_id` INTEGER NOT NULL AUTO_INCREMENT,
`user_id` INTEGER NOT NULL,
`folder_title` VARCHAR(100) NOT NULL,
`color` VARCHAR(7) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`folder_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Task` (
`task_id` INTEGER NOT NULL AUTO_INCREMENT,
`folder_id` INTEGER NULL,
`title` VARCHAR(100) NOT NULL,
`deadline` DATE NOT NULL,
`type` ENUM('PERSONAL', 'TEAM') NOT NULL,
`status` ENUM('PENDING', 'PROGRESS', 'COMPLETED') NOT NULL,
`is_alarm` BOOLEAN NOT NULL DEFAULT true,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,
`invite_code` VARCHAR(50) NULL,
`invite_expired` DATETIME NULL,

PRIMARY KEY (`task_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Member` (
`member_id` INTEGER NOT NULL AUTO_INCREMENT,
`user_id` INTEGER NOT NULL,
`task_id` INTEGER NOT NULL,
`role` BOOLEAN NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

UNIQUE INDEX `Member_user_id_task_id_key`(`user_id`, `task_id`),
PRIMARY KEY (`member_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `SubTask` (
`sub_task_id` INTEGER NOT NULL AUTO_INCREMENT,
`assignee_id` INTEGER NULL,
`task_id` INTEGER NOT NULL,
`title` VARCHAR(100) NOT NULL,
`end_date` DATE NOT NULL,
`status` ENUM('PENDING', 'PROGRESS', 'COMPLETED') NOT NULL DEFAULT 'PENDING',
`is_alarm` BOOLEAN NOT NULL DEFAULT true,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,

PRIMARY KEY (`sub_task_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Comment` (
`comment_id` INTEGER NOT NULL AUTO_INCREMENT,
`sub_task_id` INTEGER NOT NULL,
`user_id` INTEGER NOT NULL,
`content` TEXT NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`comment_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Reference` (
`data_id` INTEGER NOT NULL AUTO_INCREMENT,
`task_id` INTEGER NOT NULL,
`name` VARCHAR(50) NOT NULL,
`url` VARCHAR(255) NULL,
`file_url` VARCHAR(255) NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,

PRIMARY KEY (`data_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Log` (
`log_id` INTEGER NOT NULL AUTO_INCREMENT,
`task_id` INTEGER NOT NULL,
`date` DATE NOT NULL,
`agenda` TEXT NULL,
`conclusion` TEXT NULL,
`discussion` TEXT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,

PRIMARY KEY (`log_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Communication` (
`comu_id` INTEGER NOT NULL AUTO_INCREMENT,
`task_id` INTEGER NOT NULL,
`name` VARCHAR(50) NOT NULL,
`url` VARCHAR(255) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,

PRIMARY KEY (`comu_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- AddForeignKey
ALTER TABLE `TaskPriority` ADD CONSTRAINT `TaskPriority_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `TaskPriority` ADD CONSTRAINT `TaskPriority_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `UserAlarm` ADD CONSTRAINT `UserAlarm_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `UserAlarm` ADD CONSTRAINT `UserAlarm_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `UserAlarm` ADD CONSTRAINT `UserAlarm_sub_task_id_fkey` FOREIGN KEY (`sub_task_id`) REFERENCES `SubTask`(`sub_task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Folder` ADD CONSTRAINT `Folder_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_folder_id_fkey` FOREIGN KEY (`folder_id`) REFERENCES `Folder`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Member` ADD CONSTRAINT `Member_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Member` ADD CONSTRAINT `Member_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `SubTask` ADD CONSTRAINT `SubTask_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `SubTask` ADD CONSTRAINT `SubTask_assignee_id_fkey` FOREIGN KEY (`assignee_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Comment` ADD CONSTRAINT `Comment_sub_task_id_fkey` FOREIGN KEY (`sub_task_id`) REFERENCES `SubTask`(`sub_task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Comment` ADD CONSTRAINT `Comment_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Reference` ADD CONSTRAINT `Reference_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Log` ADD CONSTRAINT `Log_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `Communication` ADD CONSTRAINT `Communication_task_id_fkey` FOREIGN KEY (`task_id`) REFERENCES `Task`(`task_id`) ON DELETE CASCADE ON UPDATE CASCADE;
3 changes: 3 additions & 0 deletions prisma/migrations/migration_lock.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "mysql"
12 changes: 6 additions & 6 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ model UserAlarm {
taskId Int? @map("task_id") // 과제 id 과제 알람일 수도 있고 아닐 수도 있으니 nullable 고려
subTaskId Int? @map("sub_task_id") // 세부과제 id 세부과제알람일 수도 있고 아닐 수도 있으니 nullable 고려

title String @db.VarChar(30) //알람 제목
title String @db.VarChar(50) //알람 제목
alarmContent String @map("alarm_content") @db.VarChar(50) //알람 내용
isRead Boolean @default(false) @map("is_read") // 0: off, 1: on

Expand All @@ -110,7 +110,7 @@ model UserAlarm {
model Folder {
id Int @id @default(autoincrement()) @map("folder_id")
userId Int @map("user_id")
folderTitle String @map("folder_title") @db.VarChar(11)
folderTitle String @map("folder_title") @db.VarChar(100)
color String @db.VarChar(7)
createdAt DateTime @default(now()) @map("created_at") @db.DateTime

Expand All @@ -125,7 +125,7 @@ model Folder {
model Task {
id Int @id @default(autoincrement()) @map("task_id")
folderId Int? @map("folder_id") // 처음 과제를 생성하면 폴더에 과제가 안들어가있으므로 nullable 고려
title String @db.VarChar(30)
title String @db.VarChar(100)
deadline DateTime @db.Date
type TaskType // Team, Personal
status TaskStatus // PENDING, PROGRESS, COMPLETED
Expand Down Expand Up @@ -170,7 +170,7 @@ model SubTask {
assigneeId Int? @map("assignee_id") // 담당자 id (개인과제일 경우 모두 자신에게 할당됨), 처음 세부과제 생성 시 담당자 없음.
taskId Int @map("task_id") // 과제 id

title String @db.VarChar(30) // 세부과제 제목
title String @db.VarChar(100) // 세부과제 제목
endDate DateTime @map("end_date") @db.Date // 세부과제 완료 일자 => 생성 시 설정되어야 함.
status SubTaskStatus @default(PENDING) // PENDING, PROGRESS, COMPLETED => 생성 시 PENDING으로 설정됨.
isAlarm Boolean @default(true) @map("is_alarm") // true: on, false: off => 생성 시 true로 설정됨.
Expand Down Expand Up @@ -206,7 +206,7 @@ model Comment {
model Reference {
id Int @id @default(autoincrement()) @map("data_id")
taskId Int @map("task_id") // 과제 id
name String @db.VarChar(16) // 자료 이름
name String @db.VarChar(50) // 자료 이름
url String? @db.VarChar(255) // 자료 링크
fileUrl String? @map("file_url") @db.VarChar(255) // 자료 파일 url
createdAt DateTime @default(now()) @map("created_at") @db.DateTime // 자료 생성 일자
Expand Down Expand Up @@ -239,7 +239,7 @@ model Log {
model Communication {
id Int @id @default(autoincrement()) @map("comu_id")
taskId Int @map("task_id")
name String @db.VarChar(16)
name String @db.VarChar(50)
url String @db.VarChar(255)
createdAt DateTime @default(now()) @map("created_at") @db.DateTime
updatedAt DateTime? @updatedAt @map("updated_at") @db.DateTime
Expand Down