Skip to content

Commit

Permalink
PB-33236 - Ensure performance creating users collection with large da…
Browse files Browse the repository at this point in the history
…taset remains effective

Signed-off-by: Cedric Alfonsi <cedric@passbolt.com>
  • Loading branch information
cedricalfonsi committed May 6, 2024
1 parent b7a5876 commit 8f598d6
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 4 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "passbolt-styleguide",
"version": "4.8.0-alpha.4",
"version": "4.8.0-alpha.5",
"license": "AGPL-3.0",
"copyright": "Copyright 2023 Passbolt SA",
"description": "Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.",
Expand Down
7 changes: 6 additions & 1 deletion src/shared/models/entity/user/userEntity.test.data.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ export const defaultUserDto = (data = {}, options = {}) => {
defaultData.profile = profile;

if (!data.groups_users && options?.withGroupsUsers) {
defaultData.groups_users = [defaultGroupUser({user_id: defaultData.id})];
const groupsUsersCount = typeof options?.withGroupsUsers === "number" ? options?.withGroupsUsers : 1;
defaultData.groups_users = [];
for (let i = 0; i < groupsUsersCount; i++) {
const groupUserDto = defaultGroupUser({user_id: defaultData.id});
defaultData.groups_users.push(groupUserDto);
}
}

if (!data.gpgkey && options?.withGpgkey) {
Expand Down
35 changes: 35 additions & 0 deletions src/shared/models/entity/user/usersCollection.test.data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* Passbolt ~ Open source password manager for teams
* Copyright (c) Passbolt SA (https://www.passbolt.com)
*
* Licensed under GNU Affero General Public License version 3 of the or any later version.
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
* @link https://www.passbolt.com Passbolt(tm)
* @since 4.8.0
*/

import {defaultUserDto} from "./userEntity.test.data";

/**
* Build groups dtos.
* @param {number} [groupsCount=10] The number of groups.
* @param {Object} [options]
* @param {Object} [options.withRole=false] Add role default dto.
* @param {Object} [options.withGpgkey=false] Add gpg key default dto.
* @param {Object} [options.withAccountRecoveryUserSetting=false] Add account recover user settings default dto.
* @param {Object} [options.withPendingAccountRecoveryUserRequest=false] Add pending account recover user request default dto.
* @param {Object} [options.withGroupsUsers=0] Add groups users default dto.
* @returns {object}
*/
export const defaultUsersDtos = (groupsCount = 10, options = {}) => {
const dtos = [];
for (let i = 0; i < groupsCount; i++) {
const dto = defaultUserDto({username: `user${i}@domain.test`}, options);
dtos.push(dto);
}
return dtos;
};

0 comments on commit 8f598d6

Please sign in to comment.