Refactor global datasource part 3 (#16447)
## Context Following https://github.com/twentyhq/twenty/pull/16399 Now using the new global orm manager everywhere and returning a GlobalDatasource/WorkspaceDatasource based on a feature flag. This means we now need to wrap all our ORM calls within executeInWorkspaceContext callback (at least for now) so the global datasource can dynamically hydrate its context via the new store (the global datasource does not store anything related to workspaces as it is now a unique singleton). If feature flag is off it still uses local data stored in the workspace datasource.
This commit is contained in:
+3
-1
@@ -59,6 +59,9 @@ describe('WorkspaceRepository', () => {
|
||||
decrement: jest.fn(),
|
||||
preload: jest.fn(),
|
||||
clear: jest.fn(),
|
||||
get internalContext() {
|
||||
return mockInternalContext;
|
||||
},
|
||||
} as unknown as jest.Mocked<WorkspaceEntityManager>;
|
||||
|
||||
const mockFieldMetadata: FlatFieldMetadata = {
|
||||
@@ -136,7 +139,6 @@ describe('WorkspaceRepository', () => {
|
||||
mockQueryRunner = {} as QueryRunner;
|
||||
|
||||
repository = new WorkspaceRepository(
|
||||
mockInternalContext,
|
||||
'test-entity',
|
||||
mockEntityManager,
|
||||
mockFeatureFlagMap,
|
||||
|
||||
@@ -37,7 +37,6 @@ import { getObjectMetadataFromEntityTarget } from 'src/engine/twenty-orm/utils/g
|
||||
export class WorkspaceRepository<
|
||||
T extends ObjectLiteral,
|
||||
> extends Repository<T> {
|
||||
private readonly _internalContext: WorkspaceInternalContext;
|
||||
private shouldBypassPermissionChecks: boolean;
|
||||
private featureFlagMap: FeatureFlagMap;
|
||||
public readonly objectRecordsPermissions?: ObjectsPermissions;
|
||||
@@ -45,11 +44,10 @@ export class WorkspaceRepository<
|
||||
declare manager: WorkspaceEntityManager;
|
||||
|
||||
get internalContext(): WorkspaceInternalContext {
|
||||
return this._internalContext;
|
||||
return this.manager.internalContext;
|
||||
}
|
||||
|
||||
constructor(
|
||||
internalContext: WorkspaceInternalContext,
|
||||
target: EntityTarget<T>,
|
||||
manager: WorkspaceEntityManager,
|
||||
featureFlagMap: FeatureFlagMap,
|
||||
@@ -59,7 +57,6 @@ export class WorkspaceRepository<
|
||||
authContext?: AuthContext,
|
||||
) {
|
||||
super(target, manager, queryRunner);
|
||||
this._internalContext = internalContext;
|
||||
this.featureFlagMap = featureFlagMap;
|
||||
this.objectRecordsPermissions = objectRecordsPermissions;
|
||||
this.shouldBypassPermissionChecks = shouldBypassPermissionChecks;
|
||||
@@ -83,7 +80,7 @@ export class WorkspaceRepository<
|
||||
return new WorkspaceSelectQueryBuilder(
|
||||
queryBuilder,
|
||||
this.objectRecordsPermissions,
|
||||
this._internalContext,
|
||||
this.internalContext,
|
||||
this.shouldBypassPermissionChecks,
|
||||
this.authContext ?? {},
|
||||
this.featureFlagMap,
|
||||
@@ -948,10 +945,7 @@ export class WorkspaceRepository<
|
||||
* PRIVATE METHODS
|
||||
*/
|
||||
private async getObjectMetadataFromTarget() {
|
||||
return getObjectMetadataFromEntityTarget(
|
||||
this.target,
|
||||
this._internalContext,
|
||||
);
|
||||
return getObjectMetadataFromEntityTarget(this.target, this.internalContext);
|
||||
}
|
||||
|
||||
private async transformOptions<
|
||||
@@ -978,7 +972,7 @@ export class WorkspaceRepository<
|
||||
return formatData(
|
||||
data,
|
||||
objectMetadata,
|
||||
this._internalContext.flatFieldMetadataMaps,
|
||||
this.internalContext.flatFieldMetadataMaps,
|
||||
) as T;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user