Files
HiveGrid-Wireframes/hivegrid-cloud/prisma/schema/permissions.prisma
T

87 lines
3.0 KiB
Plaintext

model Role {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
tenantId String?
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
name String
description String
type String
assignToNewUsers Boolean
isDefault Boolean
order Int
permissions RolePermission[]
rowPermissions RowPermission[]
users UserRole[]
@@index([tenantId, type])
@@unique([tenantId, name])
}
model Permission {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String @unique
description String
type String
isDefault Boolean
order Int
inRoles RolePermission[]
entityId String?
entity Entity? @relation(fields: [entityId], references: [id], onDelete: Cascade)
}
model RolePermission {
id String @id @default(cuid())
roleId String
permissionId String
permission Permission @relation(fields: [permissionId], references: [id], onDelete: Cascade)
role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)
@@unique([roleId, permissionId])
}
model UserRole {
id String @id @default(cuid())
createdAt DateTime @default(now())
userId String
roleId String
tenantId String?
role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
/// Assignment uniqueness is enforced by partial indexes in migration SQL because
/// tenantId is nullable and Prisma cannot declare partial indexes.
@@index([userId, tenantId], name: "user_role_user_tenant_idx")
@@index([userId, roleId, tenantId], name: "user_role_user_role_tenant_idx")
@@index([roleId, tenantId], name: "user_role_role_tenant_idx")
}
model Group {
id String @id @default(cuid())
createdAt DateTime @default(now())
createdByUserId String
tenantId String?
name String
description String
color Int
createdByUser User @relation(fields: [createdByUserId], references: [id], onDelete: Cascade)
tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: Cascade)
users GroupUser[]
rowPermissions RowPermission[]
@@index([createdByUserId], name: "group_createdByUserId")
}
model GroupUser {
id String @id @default(cuid())
groupId String
userId String
group Group @relation(fields: [groupId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([groupId, userId], name: "group_user_membership_key")
}