[permissions] Improve performances using a cache for userWorkspaces roles (#11587)

In this PR we are 

- introducing a cached map `{ userworkspaceId: roleId } `to reduce calls
to get a userWorkspace's role (we were having N+1 around that with
combinedFindMany queries and generally having a lot of avoidable
queries)
- using the roles permissions cache (`{ roleId: { objectNameSingular:
{ canRead: bool, canUpdate: bool, ...} } `) in Permissions V1's
userHasObjectPermission, in order to 1) improve performances to avoid
calls to get roles 2) start using our permissions cache
This commit is contained in:
Marie
2025-04-16 17:07:43 +02:00
committed by GitHub
parent ab277476a8
commit 4d78f5f97f
20 changed files with 692 additions and 350 deletions

View File

@ -18,16 +18,16 @@ export class WorkspaceDataSource extends DataSource {
readonly manager: WorkspaceEntityManager;
featureFlagMapVersion: string;
featureFlagMap: FeatureFlagMap;
rolesPermissionsVersion?: string;
permissionsPerRoleId?: ObjectRecordsPermissionsByRoleId;
rolesPermissionsVersion: string;
permissionsPerRoleId: ObjectRecordsPermissionsByRoleId;
constructor(
internalContext: WorkspaceInternalContext,
options: DataSourceOptions,
featureFlagMapVersion: string,
featureFlagMap: FeatureFlagMap,
rolesPermissionsVersion?: string,
permissionsPerRoleId?: ObjectRecordsPermissionsByRoleId,
rolesPermissionsVersion: string,
permissionsPerRoleId: ObjectRecordsPermissionsByRoleId,
) {
super(options);
this.internalContext = internalContext;