mirror of
https://github.com/documenso/documenso.git
synced 2026-06-22 04:12:06 +10:00
69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
import { createTeamMembers } from '@documenso/trpc/server/team-router/create-team-members';
|
|
import { TeamMemberRole } from '@prisma/client';
|
|
|
|
import { prisma } from '..';
|
|
import { seedTeam } from './teams';
|
|
|
|
/**
|
|
* One-off seed script: creates a team with a large number of members.
|
|
*
|
|
* Run via:
|
|
* npm run with:env -- tsx packages/prisma/seed/large-team-seed.ts
|
|
*
|
|
* Produces:
|
|
* - 1 owner
|
|
* - ORG_MEMBER_COUNT organisation members
|
|
* - TEAM_MEMBER_COUNT of those org members are also added to the team's role group
|
|
*/
|
|
|
|
const ORG_MEMBER_COUNT = 200;
|
|
const TEAM_MEMBER_COUNT = 50;
|
|
|
|
const seedLargeTeam = async () => {
|
|
console.log(`[SEEDING]: Creating team with ${ORG_MEMBER_COUNT} organisation members...`);
|
|
|
|
const { owner, team, organisation } = await seedTeam({
|
|
createTeamMembers: ORG_MEMBER_COUNT,
|
|
});
|
|
|
|
// Exclude the owner — they're already a team member by default.
|
|
const nonOwnerOrgMembers = organisation.members.filter((member) => member.userId !== owner.id);
|
|
|
|
const membersToAttachToTeam = nonOwnerOrgMembers.slice(0, TEAM_MEMBER_COUNT);
|
|
|
|
console.log(`[SEEDING]: Attaching ${membersToAttachToTeam.length} org members to the team's role group...`);
|
|
|
|
await createTeamMembers({
|
|
userId: owner.id,
|
|
teamId: team.id,
|
|
membersToCreate: membersToAttachToTeam.map((member) => ({
|
|
organisationMemberId: member.id,
|
|
teamRole: TeamMemberRole.MEMBER,
|
|
})),
|
|
});
|
|
|
|
console.log(`[SEEDING]: Done.`);
|
|
console.log(` Owner email: ${owner.email}`);
|
|
console.log(` Owner password: password`);
|
|
console.log(` Organisation: ${organisation.url} (id ${organisation.id})`);
|
|
console.log(` Team URL: ${team.url} (id ${team.id})`);
|
|
console.log(` Org members: ${ORG_MEMBER_COUNT}`);
|
|
console.log(` Team-group members: ${membersToAttachToTeam.length}`);
|
|
};
|
|
|
|
const main = async () => {
|
|
try {
|
|
await seedLargeTeam();
|
|
} catch (err) {
|
|
console.error('[SEEDING]: Failed to seed large team.');
|
|
console.error(err);
|
|
process.exitCode = 1;
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|
|
};
|
|
|
|
if (require.main === module) {
|
|
void main();
|
|
}
|