To test, apply the following diff and re-run sh ./scripts/seed-lightdash.sh - this will add 10k users to the database
diff --git a/packages/backend/src/database/seeds/development/01_initial_user.ts b/packages/backend/src/database/seeds/development/01_initial_user.ts
index 395333e8b..16b97cbc5 100644
--- a/packages/backend/src/database/seeds/development/01_initial_user.ts
+++ b/packages/backend/src/database/seeds/development/01_initial_user.ts
@@ -20,6 +20,7 @@ import {
import bcrypt from 'bcrypt';
import { Knex } from 'knex';
import path from 'path';
+import { v4 } from 'uuid';
import { lightdashConfig } from '../../../config/lightdashConfig';
import { ProjectModel } from '../../../models/ProjectModel/ProjectModel';
import { projectAdapterFromConfig } from '../../../projectAdapters/projectAdapter';
@@ -35,16 +36,27 @@ export async function seed(knex: Knex): Promise<void> {
await knex('organizations').del();
const addUser = async (
- seedOrganization: DbOrganizationIn,
+ seedOrganization: DbOrganizationIn | undefined,
seedUser: DbUserIn,
seedEmail: Omit<DbEmailIn, 'user_id'>,
seedPassword: { password: string },
+ existingOrgUuid?: string,
) => {
- const [{ organization_id: organizationId }] = await knex(
- 'organizations',
- )
- .insert(seedOrganization)
- .returning('organization_id');
+ let organizationId: number | undefined;
+
+ if (seedOrganization) {
+ const [{ organization_id: o }] = await knex('organizations')
+ .insert(seedOrganization)
+ .returning('organization_id');
+
+ organizationId = o;
+ } else if (existingOrgUuid) {
+ const [org] = await knex('organizations')
+ .select()
+ .where('organization_uuid', existingOrgUuid);
+ organizationId = org.organization_id;
+ }
+
if (organizationId === undefined) {
throw new Error('Organization was not created');
}
@@ -85,6 +97,34 @@ export async function seed(knex: Knex): Promise<void> {
SEED_ORG_1_ADMIN_EMAIL,
SEED_ORG_1_ADMIN_PASSWORD,
);
+
+ async function addXUsers(x: number) {
+ const promises: ReturnType<typeof addUser>[] = [];
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i <= x; ++i) {
+ promises.push(
+ addUser(
+ undefined,
+ {
+ ...SEED_ORG_1_ADMIN,
+ first_name: `${SEED_ORG_1_ADMIN.first_name} ${i}`,
+ user_uuid: v4(),
+ },
+ {
+ ...SEED_ORG_1_ADMIN_EMAIL,
+ email: `demo+${i}@lightdash.com`,
+ },
+ SEED_ORG_1_ADMIN_PASSWORD,
+ SEED_ORG_1.organization_uuid,
+ ),
+ );
+ }
+
+ await Promise.all(promises);
+ }
+
+ await addXUsers(10000);
+
await addUser(
SEED_ORG_2,
SEED_ORG_2_ADMIN,
List view
0 issues of 3 selected
- Status: Open.#12126 In lightdash/lightdash;
- Status: Open.#12127 In lightdash/lightdash;
- Status: Open.#12209 In lightdash/lightdash;