Migrate agent v2 (#16214)
# Introduction Closes https://github.com/twentyhq/core-team-issues/issues/1980 In this PR we migrate the agent from v1 to v2. ## New FlatRoleTargetByAgentIdMaps Derivated the `flatRoleTargetMaps` to be building a `flatRoleTargetByAgentIdMaps` to ease retrieving a roleId to associate to an agent ## Coverage Added strong coverage on both failing and successful CRU agents operations --------- Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
import { isDefined } from 'class-validator';
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type MetadataEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-entity.type';
|
||||
import { type MetadataManyToOneJoinColumn } from 'src/engine/metadata-modules/flat-entity/types/metadata-many-to-one-join-column.type';
|
||||
|
||||
export type RegroupEntitiesByRelatedEntityIdArgs<T extends AllMetadataName> =
|
||||
MetadataManyToOneJoinColumn<T> extends never
|
||||
? never
|
||||
: {
|
||||
entities: MetadataEntity<T>[];
|
||||
foreignKey: MetadataManyToOneJoinColumn<T>;
|
||||
};
|
||||
export const regroupEntitiesByRelatedEntityId = <T extends AllMetadataName>({
|
||||
entities,
|
||||
foreignKey,
|
||||
}: RegroupEntitiesByRelatedEntityIdArgs<T>) => {
|
||||
const entitiesByRelatedEntityId = new Map<string, { id: string }[]>();
|
||||
|
||||
for (const entity of entities) {
|
||||
const currentRelatedEntityId = entity[
|
||||
foreignKey as keyof MetadataEntity<T>
|
||||
] as string;
|
||||
|
||||
if (!isDefined(currentRelatedEntityId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!entitiesByRelatedEntityId.has(currentRelatedEntityId)) {
|
||||
entitiesByRelatedEntityId.set(currentRelatedEntityId, []);
|
||||
}
|
||||
|
||||
entitiesByRelatedEntityId
|
||||
.get(currentRelatedEntityId)!
|
||||
.push({ id: entity.id });
|
||||
}
|
||||
|
||||
return entitiesByRelatedEntityId;
|
||||
};
|
||||
Reference in New Issue
Block a user