Fix seeding perf + batch role targets creation (#16337)

This commit is contained in:
Weiko
2025-12-04 20:29:48 +01:00
committed by GitHub
parent e653385485
commit 1991ee850e
11 changed files with 156 additions and 110 deletions
@@ -99,9 +99,9 @@ export class DevSeederPermissionsService {
applicationId: twentyStandardApplication.id,
});
await this.userRoleService.assignRoleToUserWorkspace({
await this.userRoleService.assignRoleToManyUserWorkspace({
workspaceId,
userWorkspaceId: guestUserWorkspaceId,
userWorkspaceIds: [guestUserWorkspaceId],
roleId: guestRole.id,
});
@@ -110,9 +110,9 @@ export class DevSeederPermissionsService {
applicationId: twentyStandardApplication.id,
});
await this.userRoleService.assignRoleToUserWorkspace({
await this.userRoleService.assignRoleToManyUserWorkspace({
workspaceId,
userWorkspaceId: limitedUserWorkspaceId,
userWorkspaceIds: [limitedUserWorkspaceId],
roleId: limitedRole.id,
});
} else if (workspaceId === SEED_YCOMBINATOR_WORKSPACE_ID) {
@@ -125,9 +125,9 @@ export class DevSeederPermissionsService {
}
if (adminUserWorkspaceId) {
await this.userRoleService.assignRoleToUserWorkspace({
await this.userRoleService.assignRoleToManyUserWorkspace({
workspaceId,
userWorkspaceId: adminUserWorkspaceId,
userWorkspaceIds: [adminUserWorkspaceId],
roleId: adminRole.id,
});
}
@@ -144,14 +144,12 @@ export class DevSeederPermissionsService {
activationStatus: WorkspaceActivationStatus.ACTIVE,
});
if (memberUserWorkspaceIds) {
for (const memberUserWorkspaceId of memberUserWorkspaceIds) {
await this.userRoleService.assignRoleToUserWorkspace({
workspaceId,
userWorkspaceId: memberUserWorkspaceId,
roleId: memberRole.id,
});
}
if (memberUserWorkspaceIds.length > 0) {
await this.userRoleService.assignRoleToManyUserWorkspace({
workspaceId,
userWorkspaceIds: memberUserWorkspaceIds,
roleId: memberRole.id,
});
}
}
@@ -9,7 +9,6 @@ import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/featu
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service';
import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service';
@@ -36,7 +35,6 @@ export class DevSeederService {
private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService,
private readonly devSeederMetadataService: DevSeederMetadataService,
private readonly devSeederPermissionsService: DevSeederPermissionsService,
private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService,
private readonly devSeederDataService: DevSeederDataService,
private readonly applicationService: ApplicationService,
private readonly workspaceCacheService: WorkspaceCacheService,
@@ -61,9 +59,10 @@ export class DevSeederService {
workspaceId,
);
await this.workspaceCacheService.invalidateAndRecompute(workspaceId, [
'flatApplicationMaps',
]);
const { featureFlagsMap } = await this.workspaceCacheService.getOrRecompute(
workspaceId,
['flatApplicationMaps', 'featureFlagsMap'],
);
const dataSourceMetadata =
await this.dataSourceService.createDataSourceMetadata(
@@ -71,9 +70,6 @@ export class DevSeederService {
schemaName,
);
const featureFlags =
await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspaceId);
const twentyStandardApplication =
await this.applicationService.findByUniversalIdentifier({
workspaceId,
@@ -96,13 +92,13 @@ export class DevSeederService {
await this.workspaceSyncMetadataService.synchronize({
workspaceId: workspaceId,
dataSourceId: dataSourceMetadata.id,
featureFlags,
featureFlags: featureFlagsMap,
});
await this.devSeederMetadataService.seed({
dataSourceMetadata,
workspaceId,
featureFlags,
featureFlags: featureFlagsMap,
twentyStandardFlatApplication,
});
@@ -130,10 +126,8 @@ export class DevSeederService {
relations: { fields: true },
});
const isDashboardV2Enabled = await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IS_DASHBOARD_V2_ENABLED,
workspaceId,
);
const isDashboardV2Enabled =
featureFlagsMap[FeatureFlagKey.IS_DASHBOARD_V2_ENABLED] ?? false;
await seedPageLayoutWidgets({
dataSource: this.coreDataSource,
@@ -146,12 +140,9 @@ export class DevSeederService {
await this.devSeederDataService.seed({
schemaName: dataSourceMetadata.schema,
workspaceId,
featureFlags,
featureFlags: featureFlagsMap,
});
await this.workspaceCacheStorageService.flush(workspaceId, undefined);
await this.flatEntityMapsCacheService.flushFlatEntityMaps({
workspaceId,
});
}
}
@@ -89,5 +89,10 @@ export const computeTwentyStandardApplicationAllFlatEntityMaps = ({
idByUniversalIdentifier: {},
universalIdentifiersByApplicationId: {},
},
flatPageLayoutTabMaps: {
byId: {},
idByUniversalIdentifier: {},
universalIdentifiersByApplicationId: {},
},
};
};
@@ -201,9 +201,9 @@ export class WorkspaceManagerService {
where: { workspaceId, userId },
});
await this.userRoleService.assignRoleToUserWorkspace({
await this.userRoleService.assignRoleToManyUserWorkspace({
workspaceId,
userWorkspaceId: userWorkspace.id,
userWorkspaceIds: [userWorkspace.id],
roleId: adminRole.id,
});
}