Files
calendar/packages/prisma/seed-huge-event-types.ts
T
Alex van AndelandGitHub d25c043046 chore: Remove all avatar/logo references (#14532)
* chore: Remove all avatar/logo references

* Updated user profile to only use avatarUrl

* fix: minor style issue

* chore: Remove redundant includeTeamLogo

* fix: Use right avatar default in event type list

* fix: placeholder avatar team profile, target

* chore: Add logoUrl/avatarUrl to JWT

* fix: Bunch of org avatar issues, fix members list

* Fix logoUrl on org pages

* More type fixes

* Hopefully final type fixes

* Another round of type fixes

* fix: UserForm ts

* fix: Handle as return types, not input types

* fix: Remove profile and add avatarUrl

* fix: notFound as const

* fix: Seeder avatarUrl params

* revert: Migration changes for easier recovery

* fix: Add explicit type to builder as avatar is now set

* Add logoUrl to unpublished entity

* Avatar test out of scope here

* fix: Use the new avatarUrl after save

* chore: Removed getOrgAvatarUrl/getTeamAvatarUrl

* fix: Update sidebar image immediately after change

* Unable to safe unnamed user, so default

* fix: Unpublished page, add organization test

* Add more tests
2024-04-18 21:54:16 -07:00

92 lines
2.3 KiB
TypeScript

/**
* This script can be used to seed the database with a lot of data for performance testing.
* TODO: Make it more structured and configurable from CLI
* Run it as `npx ts-node --transpile-only ./seed-huge-event-types.ts`
*/
import { createTeamAndAddUsers, createUserAndEventType } from "./seed-utils";
const getEventTypes = (numberOfEventTypes: number) => {
const eventTypes = Array<{
title: string;
slug: string;
length: number;
}>(numberOfEventTypes)
.fill({
title: "30min",
slug: "30min",
length: 30,
})
.map((event, index) => {
return {
...event,
title: `30min-${index}`,
slug: `30min-${index}`,
};
});
return eventTypes;
};
async function createTeamsWithEventTypes({
owner,
numberOfTeams,
numberOfEventTypes,
}: {
owner: { id: number; username: string | null };
numberOfTeams: number;
numberOfEventTypes: number;
}) {
const members = [owner];
for (let i = 0; i < 10; i++) {
members.push(
await createUserAndEventType({
user: {
email: `enterprise-member-${i + 1}@example.com`,
name: `Enterprise Member ${i + 1}`,
password: `enterprise-member-${i + 1}`,
username: `enterprise-member-${i + 1}`,
theme: "light",
},
})
);
}
for (let i = 0; i < numberOfTeams; i++) {
await createTeamAndAddUsers(
{
name: `Enterprise Team-${i + 1}`,
slug: `enterprise-team-${i + 1}`,
eventTypes: {
createMany: {
data: getEventTypes(numberOfEventTypes).map((eventType) => {
return {
...eventType,
schedulingType: "COLLECTIVE",
};
}),
},
},
createdAt: new Date(),
},
members.map((member) => ({
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
username: member.username!,
id: member.id,
}))
);
}
}
export default async function main() {
const owner = await createUserAndEventType({
user: {
email: `enterprise@example.com`,
name: "Enterprise Owner",
password: "enterprise",
username: `enterprise`,
theme: "light",
},
eventTypes: getEventTypes(100),
});
await createTeamsWithEventTypes({ owner, numberOfTeams: 10, numberOfEventTypes: 100 });
}