import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { console.log('šŸ”§ äæ®å¤å·„ä½œå°ęƒé™é…ē½®...\n'); // 1. čŽ·å–ę‰€ęœ‰ē§Ÿęˆ· const tenants = await prisma.tenant.findMany({ select: { id: true, name: true } }); for (const tenant of tenants) { console.log(`šŸ“ å¤„ē†ē§Ÿęˆ·: ${tenant.name} (ID: ${tenant.id})`); // 2. ę£€ęŸ„/åˆ›å»ŗ workbench:read ꝃ限 let perm = await prisma.permission.findFirst({ where: { tenantId: tenant.id, code: 'workbench:read' } }); if (!perm) { perm = await prisma.permission.create({ data: { tenantId: tenant.id, code: 'workbench:read', name: 'ęŸ„ēœ‹å·„ä½œå°', resource: 'workbench', action: 'read', description: 'č®æé—®å·„ä½œå°é”µé¢', } }); console.log(' āœ… åˆ›å»ŗęƒé™: workbench:read'); } else { console.log(' ā­ļø ęƒé™å·²å­˜åœØ: workbench:read'); } // 3. äøŗčÆ„ē§Ÿęˆ·ēš„ę‰€ęœ‰č§’č‰²åˆ†é…ę­¤ęƒé™ const roles = await prisma.role.findMany({ where: { tenantId: tenant.id }, select: { id: true, name: true, code: true } }); for (const role of roles) { const existing = await prisma.rolePermission.findFirst({ where: { roleId: role.id, permissionId: perm.id } }); if (!existing) { await prisma.rolePermission.create({ data: { roleId: role.id, permissionId: perm.id } }); console.log(` āœ… åˆ†é…ē»™č§’č‰²: ${role.name}`); } else { console.log(` ā­ļø 角色 ${role.name} å·²ęœ‰ę­¤ęƒé™`); } } } // 4. ę›“ę–°å·„ä½œå°čœå•ēš„ęƒé™é…ē½® console.log('\nšŸ”§ ę›“ę–°å·„ä½œå°čœå•ęƒé™é…ē½®...'); const workbenchMenu = await prisma.menu.findFirst({ where: { name: '巄作台' } }); if (workbenchMenu) { if (!workbenchMenu.permission || workbenchMenu.permission.trim() === '') { await prisma.menu.update({ where: { id: workbenchMenu.id }, data: { permission: 'workbench:read' } }); console.log('āœ… å·„ä½œå°čœå•å·²č®¾ē½® permission: workbench:read'); } else { console.log(`ā­ļø å·„ä½œå°čœå•å·²ęœ‰ęƒé™: ${workbenchMenu.permission}`); } } else { console.log('āš ļø ęœŖę‰¾åˆ°å·„ä½œå°čœå•'); } console.log('\nāœ… å®Œęˆļ¼čÆ·é‡ę–°ē™»å½•ä»„ęŸ„ēœ‹ę›“ę–°åŽēš„čœå•ć€‚'); } main() .catch(console.error) .finally(() => prisma.$disconnect());