56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
||
const prisma = new PrismaClient();
|
||
|
||
enum PermissionType {
|
||
Menu,
|
||
API,
|
||
}
|
||
|
||
async function main() {
|
||
await prisma.sysUser.upsert({
|
||
where: { account: 'admin' },
|
||
update: {},
|
||
create: {
|
||
name: '管理员',
|
||
account: 'admin',
|
||
password: '$2a$10$rWb52cHK1hrWuQQg3LiOJ.crDfIqjoOIoglGM96a.Ao1DL/dQwKCu',
|
||
passwordSalt: '$2a$10$rWb52cHK1hrWuQQg3LiOJ.',
|
||
status: 1,
|
||
},
|
||
});
|
||
const menus = [
|
||
{ name: '用户管理', path: 'user', type: PermissionType.Menu },
|
||
{ name: '角色管理', path: 'role', type: PermissionType.Menu },
|
||
{ name: '菜单管理', path: 'menu', type: PermissionType.Menu },
|
||
{ name: '系统配置', path: 'config', type: PermissionType.Menu },
|
||
];
|
||
|
||
for (const menu of menus) {
|
||
// 创建菜单
|
||
await prisma.$transaction(async (_prisma) => {
|
||
const { id: resourceId } = await _prisma.sysResource.create({
|
||
data: menu,
|
||
});
|
||
// 创建菜单权限
|
||
const { id: permissionId } = await _prisma.sysPermission.create({
|
||
data: {},
|
||
});
|
||
// 关联权限和菜单
|
||
await _prisma.sysResourcePermission.create({
|
||
data: { resourceId, permissionId },
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
main()
|
||
.then(async () => {
|
||
console.log('seed done!');
|
||
await prisma.$disconnect();
|
||
})
|
||
.catch(async (e) => {
|
||
console.error(e);
|
||
await prisma.$disconnect();
|
||
process.exit(1);
|
||
});
|