Cache WorkspaceMember (#17247)
## Context Due to RLS feature, workspaceMember entity and its properties is becoming necessary in different places of the backend. To avoid querying many times, this PR adds a map of workspace members per workspaceId, leveraging WorkspaceCache pattern for WorkspaceEntity (in opposition with CoreEntity) Due to its content (mostly PII), I prefer to cache it locally only (node process VS Redis) using localDataOnly. TODO: invalidation logic when the workspaceMember object is updated (more precisely, when its field map is updated). There is no easy way today to update that list so it can be done in another PR imho
This commit is contained in:
@@ -3,6 +3,7 @@ import { type EntityMetadata } from 'typeorm';
|
||||
|
||||
import { type FlatApplicationCacheMaps } from 'src/engine/core-modules/application/types/flat-application-cache-maps.type';
|
||||
import { type FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||
import { type FlatWorkspaceMemberMaps } from 'src/engine/core-modules/user/types/flat-workspace-member-maps.type';
|
||||
import { type FlatRoleTargetByAgentIdMaps } from 'src/engine/metadata-modules/flat-agent/types/flat-role-target-by-agent-id-maps.type';
|
||||
import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
|
||||
import { type UserWorkspaceRoleMap } from 'src/engine/metadata-modules/role-target/services/workspace-user-workspace-role-map-cache.service';
|
||||
@@ -42,6 +43,7 @@ export const WORKSPACE_CACHE_KEYS_V2 = {
|
||||
flatRowLevelPermissionPredicateGroupMaps:
|
||||
'flat-maps:row-level-permission-predicate-group',
|
||||
flatFrontComponentMaps: 'flat-maps:front-component',
|
||||
flatWorkspaceMemberMaps: 'flat-maps:workspace-member',
|
||||
} as const satisfies Record<WorkspaceCacheKeyName, string>;
|
||||
|
||||
export type AdditionalCacheDataMaps = {
|
||||
@@ -54,6 +56,7 @@ export type AdditionalCacheDataMaps = {
|
||||
flatRoleTargetByAgentIdMaps: FlatRoleTargetByAgentIdMaps;
|
||||
flatRowLevelPermissionPredicateMaps: FlatRowLevelPermissionPredicateMaps;
|
||||
flatRowLevelPermissionPredicateGroupMaps: FlatRowLevelPermissionPredicateGroupMaps;
|
||||
flatWorkspaceMemberMaps: FlatWorkspaceMemberMaps;
|
||||
};
|
||||
|
||||
export type WorkspaceCacheDataMap = AllFlatEntityMaps & AdditionalCacheDataMaps;
|
||||
|
||||
Reference in New Issue
Block a user