Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
No due date
Last updated Nov 1, 2024
25% complete

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