// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") relationMode = "prisma" } // 系统用户表 model SysUser { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String? /// 用户姓名 account String @unique /// 账户 password String /// 密码 passwordSalt String @map("password_salt") /// 密码盐 status Int @default(0) @db.SmallInt /// 用户状态 avatarId String? @map("avatar_id") /// 用户头像id avatar File? @relation(fields: [avatarId], references: [id]) gender Int @default(0) @db.SmallInt /// 用户性别 0:女 1:男 2:未知 userRole SysUserRole[] @@index([avatarId]) @@map("sys_user") } // 系统角色表 model SysRole { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 code String @unique name String status Int @default(0) @db.SmallInt /// 角色状态 sysRolePermission SysRolePermission[] sysUserRole SysUserRole[] @@map("sys_role") } // 用户角色关联表 model SysUserRole { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 userId String @map("user_id") roleId String @map("role_id") user SysUser @relation(fields: [userId], references: [id], onDelete: Cascade) role SysRole @relation(fields: [roleId], references: [id], onDelete: Cascade) @@index([userId]) @@index([roleId]) @@map("sys_user_role") } // 文件表 model File { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String /// 文件名称 originName String @map("origin_name") path String size Int width Int? height Int? sysUser SysUser[] @@map("file") } // 权限表 model SysPermission { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String? @unique // 权限字符 sysRolePermission SysRolePermission[] sysResourcePermission SysResourcePermission[] @@map("sys_permission") } // 角色权限关联表 model SysRolePermission { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 roleId String @map("role_id") permissionId String @map("permission_id") role SysRole @relation(fields: [roleId], references: [id], onDelete: Cascade) permission SysPermission @relation(fields: [permissionId], references: [id], onDelete: Cascade) @@index([roleId]) @@index([permissionId]) @@map("sys_role_permission") } // 系统资源表 model SysResource { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 name String /// 菜单名称或者接口名称 path String? @unique() /// 菜单或api路径 permission String? @unique() /// 权限字符 parentId String? @map("parent_id") sort Int @default(0) type Int /// 资源类型 0:菜单 1:api sysResourcePermission SysResourcePermission[] @@map("sys_resource") } // 系统资源权限表 model SysResourcePermission { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 resourceId String @map("resource_id") resource SysResource @relation(fields: [resourceId], references: [id], onDelete: Cascade) permissionId String @map("permission_id") permission SysPermission @relation(fields: [permissionId], references: [id], onDelete: Cascade) @@index([resourceId]) @@index([permissionId]) @@map("sys_resource_permission") } // 系统配置 model SysConfig { id String @id @default(cuid()) /// 主键id createdAt DateTime @default(now()) @map("created_at") /// 创建时间 updatedAt DateTime @updatedAt @map("updated_at") /// 修改时间 key String @unique value String remark String? @@map("sys_config") }