52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
||
const prisma = new PrismaClient();
|
||
|
||
enum PermissionType {
|
||
Menu,
|
||
}
|
||
|
||
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: '用户管理', url: 'user', parentId: 0 },
|
||
{ name: '角色管理', url: 'role', parentId: 0 },
|
||
{ name: '菜单管理', url: 'menu', parentId: 0 },
|
||
];
|
||
|
||
for (const menu of menus) {
|
||
// 创建菜单
|
||
await prisma.$transaction(async (_prisma) => {
|
||
const { id: menuId } = await _prisma.sysMenu.create({ data: menu });
|
||
// 创建菜单权限
|
||
const { id: permissionId } = await _prisma.sysPermission.create({
|
||
data: { type: PermissionType.Menu },
|
||
});
|
||
// 关联权限和菜单
|
||
await _prisma.sysMenuPermission.create({
|
||
data: { menuId, permissionId },
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
main()
|
||
.then(async () => {
|
||
console.log('seed done!');
|
||
await prisma.$disconnect();
|
||
})
|
||
.catch(async (e) => {
|
||
console.error(e);
|
||
await prisma.$disconnect();
|
||
process.exit(1);
|
||
});
|