feat: twenty orm sync (#5266)

This PR is updating all object metadata entities with the new
decorators, and deleting the old ones.
This way we can use the new TwentyORM with all the standard objects.

---------

Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
Jérémy M
2024-05-15 16:58:47 +02:00
committed by GitHub
parent 6898c1e4d8
commit f0383e3147
81 changed files with 1721 additions and 2060 deletions

View File

@ -1,24 +1,72 @@
/* eslint-disable @typescript-eslint/ban-types */
import { WorkspaceDynamicRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface';
import { WorkspaceFieldMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface';
import { WorkspaceObjectMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-object-metadata-args.interface';
import { WorkspaceEntityMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface';
import { WorkspaceRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface';
import { WorkspaceExtendedEntityMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface';
export class MetadataArgsStorage {
readonly objects: WorkspaceObjectMetadataArgs[] = [];
readonly fields: WorkspaceFieldMetadataArgs[] = [];
readonly relations: WorkspaceRelationMetadataArgs[] = [];
private readonly entities: WorkspaceEntityMetadataArgs[] = [];
private readonly extendedEntities: WorkspaceExtendedEntityMetadataArgs[] = [];
private readonly fields: WorkspaceFieldMetadataArgs[] = [];
private readonly relations: WorkspaceRelationMetadataArgs[] = [];
private readonly dynamicRelations: WorkspaceDynamicRelationMetadataArgs[] =
[];
filterObjects(
addEntities(...entities: WorkspaceEntityMetadataArgs[]): void {
this.entities.push(...entities);
}
addExtendedEntities(
...extendedEntities: WorkspaceExtendedEntityMetadataArgs[]
): void {
this.extendedEntities.push(...extendedEntities);
}
addFields(...fields: WorkspaceFieldMetadataArgs[]): void {
this.fields.push(...fields);
}
addRelations(...relations: WorkspaceRelationMetadataArgs[]): void {
this.relations.push(...relations);
}
addDynamicRelations(
...dynamicRelations: WorkspaceDynamicRelationMetadataArgs[]
): void {
this.dynamicRelations.push(...dynamicRelations);
}
filterEntities(
target: Function | string,
): WorkspaceObjectMetadataArgs | undefined;
): WorkspaceEntityMetadataArgs | undefined;
filterObjects(target: (Function | string)[]): WorkspaceObjectMetadataArgs[];
filterEntities(target: (Function | string)[]): WorkspaceEntityMetadataArgs[];
filterObjects(
filterEntities(
target: (Function | string) | (Function | string)[],
): WorkspaceObjectMetadataArgs | undefined | WorkspaceObjectMetadataArgs[] {
const objects = this.filterByTarget(this.objects, target);
): WorkspaceEntityMetadataArgs | undefined | WorkspaceEntityMetadataArgs[] {
const objects = this.filterByTarget(this.entities, target);
return Array.isArray(objects) ? objects[0] : objects;
}
filterExtendedEntities(
target: Function | string,
): WorkspaceExtendedEntityMetadataArgs | undefined;
filterExtendedEntities(
target: (Function | string)[],
): WorkspaceExtendedEntityMetadataArgs[];
filterExtendedEntities(
target: (Function | string) | (Function | string)[],
):
| WorkspaceExtendedEntityMetadataArgs
| undefined
| WorkspaceExtendedEntityMetadataArgs[] {
const objects = this.filterByTarget(this.extendedEntities, target);
return Array.isArray(objects) ? objects[0] : objects;
}
@ -45,6 +93,20 @@ export class MetadataArgsStorage {
return this.filterByTarget(this.relations, target);
}
filterDynamicRelations(
target: Function | string,
): WorkspaceDynamicRelationMetadataArgs[];
filterDynamicRelations(
target: (Function | string)[],
): WorkspaceDynamicRelationMetadataArgs[];
filterDynamicRelations(
target: (Function | string) | (Function | string)[],
): WorkspaceDynamicRelationMetadataArgs[] {
return this.filterByTarget(this.dynamicRelations, target);
}
protected filterByTarget<T extends { target: Function | string }>(
array: T[],
target: (Function | string) | (Function | string)[],