diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5d1dd92..70b3123 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -42,15 +42,16 @@ model Session { } model User { - id String @id @default(cuid()) + id String @id @default(cuid()) name String? - username String @unique - email String? @unique + username String @unique + email String? @unique emailVerified DateTime? image String? accounts Account[] sessions Session[] Workspace Workspace[] + Deployment Deployment[] } model VerificationToken { @@ -71,10 +72,11 @@ model Workspace { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt Application Application[] + Deployment Deployment[] } model Application { - id String @id @default(cuid()) + id String @id @default(cuid()) name String serviceProvider String repository String @@ -82,8 +84,31 @@ model Application { repositoryId String path String autoDeploy Boolean - Workspace Workspace @relation(fields: [workspaceId], references: [id]) workspaceId String - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + Deployment Deployment[] + + Workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade) +} + +enum DeploymentStatus { + PENDING + IN_PROGRESS + FAILED + SUCCESS +} + +model Deployment { + id String @id @default(cuid()) + applicationId String + workspaceId String + userId String + status DeploymentStatus @default(PENDING) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + Application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade) + Workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade) + User User @relation(fields: [userId], references: [id], onDelete: Cascade) }