Tech4biz-channel/Channel-Backend/prisma/schema.prisma
2026-07-09 09:31:15 +05:30

97 lines
2.4 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
enum Role {
ADMIN
PARTNER_USER
}
enum DocumentType {
NDA
MSA
}
model Organization {
id String @id @default(uuid())
name String
status String @default("ACTIVE")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
users User[]
}
model User {
id String @id @default(uuid())
email String @unique
passwordHash String
role Role @default(PARTNER_USER)
mfaEnabled Boolean @default(true)
mfaSecret String?
inviteToken String? @unique
inviteTokenExp DateTime?
organizationId String?
onboardingStatus String @default("PENDING_ONBOARDING")
organization Organization? @relation(fields: [organizationId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
acceptances LegalAcceptance[]
auditLogs AuditLog[]
}
model Asset {
id String @id @default(uuid())
title String
type String
size Int
url String
version Int @default(1)
uploadedBy String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Folder {
id String @id @default(uuid())
name String
parentId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model LegalDocument {
id String @id @default(uuid())
type DocumentType
version String
content String @db.Text
isActive Boolean @default(false)
createdAt DateTime @default(now())
acceptances LegalAcceptance[]
}
model LegalAcceptance {
id String @id @default(uuid())
docId String
userId String
ipAddress String
signatureHash String?
documentUrl String?
acceptedAt DateTime @default(now())
document LegalDocument @relation(fields: [docId], references: [id])
user User @relation(fields: [userId], references: [id])
}
model AuditLog {
id String @id @default(uuid())
actorId String
action String
resource String
metadata Json?
createdAt DateTime @default(now())
actor User @relation(fields: [actorId], references: [id])
}