Levi Mason
02/05/2022, 6:32 PMgenerator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
// -------------------------------------- //
enum Role {
NONE
GROUP
MANAGER
}
enum ProjectStatus {
TEMPLATE
IN_PROGRESS
COMPLETED
}
enum TaskStatus {
IDLE
DOING
DONE
}
// -------------------------------------- //
model User {
id Int @id @default(autoincrement())
name String
email String @unique
role Role
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
projects Project[]
Group Group? @relation(fields: [groupId], references: [id])
groupId Int?
}
model Group {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
members User[]
projects Project[]
Manager Manager? @relation(fields: [managerId], references: [id])
managerId Int?
}
model Manager {
id Int @id @default(autoincrement())
userId String @unique
name String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
groups Group[]
}
// -------------------------------------- //
model Project {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
projectStatus ProjectStatus
archived Boolean @default(false)
starred Boolean @default(false)
name String
description String
tag String
deadline DateTime
links String[]
stories Story[]
User User? @relation(fields: [userId], references: [id])
userId Int?
Group Group? @relation(fields: [groupId], references: [id])
groupId Int?
}
model Story {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
description String
tasks Task[]
Project Project? @relation(fields: [projectId], references: [id])
projectId Int?
}
model Task {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
status TaskStatus
Story Story? @relation(fields: [storyId], references: [id])
storyId Int?
}