feat: refactor folder structure (#4498)

* feat: wip refactor folder structure

* Fix

* fix position

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Jérémy M
2024-03-15 14:40:58 +01:00
committed by GitHub
parent 52f1b3ac98
commit 94487f6737
760 changed files with 3215 additions and 3155 deletions

View File

@ -0,0 +1,49 @@
import { FieldMetadataEntity } from 'src/engine-metadata/field-metadata/field-metadata.entity';
import { RelationMetadataEntity } from 'src/engine-metadata/relation-metadata/relation-metadata.entity';
import { ComputedPartialFieldMetadata } from './partial-field-metadata.interface';
import { ComputedPartialObjectMetadata } from './partial-object-metadata.interface';
export const enum ComparatorAction {
SKIP = 'SKIP',
CREATE = 'CREATE',
UPDATE = 'UPDATE',
DELETE = 'DELETE',
}
export interface ComparatorSkipResult {
action: ComparatorAction.SKIP;
}
export interface ComparatorCreateResult<T> {
action: ComparatorAction.CREATE;
object: T;
}
export interface ComparatorUpdateResult<T> {
action: ComparatorAction.UPDATE;
object: T;
}
export interface ComparatorDeleteResult<T> {
action: ComparatorAction.DELETE;
object: T;
}
export type ObjectComparatorResult =
| ComparatorSkipResult
| ComparatorCreateResult<ComputedPartialObjectMetadata>
| ComparatorUpdateResult<Partial<ComputedPartialObjectMetadata>>;
export type FieldComparatorResult =
| ComparatorSkipResult
| ComparatorCreateResult<ComputedPartialFieldMetadata>
| ComparatorUpdateResult<
Partial<ComputedPartialFieldMetadata> & { id: string }
>
| ComparatorDeleteResult<FieldMetadataEntity>;
export type RelationComparatorResult =
| ComparatorCreateResult<Partial<RelationMetadataEntity>>
| ComparatorDeleteResult<RelationMetadataEntity>
| ComparatorUpdateResult<Partial<RelationMetadataEntity>>;

View File

@ -0,0 +1,3 @@
export interface GateDecoratorParams {
featureFlag: string;
}

View File

@ -0,0 +1,19 @@
import { PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { PartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine-metadata/object-metadata/object-metadata.entity';
import { FieldMetadataEntity } from 'src/engine-metadata/field-metadata/field-metadata.entity';
export type MappedFieldMetadata = Record<string, PartialFieldMetadata>;
export interface MappedObjectMetadata
extends Omit<PartialObjectMetadata, 'fields'> {
fields: MappedFieldMetadata;
}
export type MappedFieldMetadataEntity = Record<string, FieldMetadataEntity>;
export interface MappedObjectMetadataEntity
extends Omit<ObjectMetadataEntity, 'fields'> {
fields: MappedFieldMetadataEntity;
}

View File

@ -0,0 +1,20 @@
import { ReflectDynamicRelationFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/reflect-computed-relation-field-metadata.interface';
import { ReflectFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/reflect-field-metadata.interface';
export type PartialFieldMetadata = Omit<
ReflectFieldMetadata[string],
'joinColumn'
> & {
workspaceId: string;
objectMetadataId?: string;
};
export type PartialComputedFieldMetadata =
ReflectDynamicRelationFieldMetadata & {
workspaceId: string;
objectMetadataId?: string;
};
export type ComputedPartialFieldMetadata = {
[K in keyof PartialFieldMetadata]: ExcludeFunctions<PartialFieldMetadata[K]>;
};

View File

@ -0,0 +1,21 @@
import {
ComputedPartialFieldMetadata,
PartialComputedFieldMetadata,
PartialFieldMetadata,
} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { ReflectObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/reflect-object-metadata.interface';
export type PartialObjectMetadata = ReflectObjectMetadata & {
id?: string;
workspaceId: string;
dataSourceId: string;
fields: (PartialFieldMetadata | PartialComputedFieldMetadata)[];
};
export type ComputedPartialObjectMetadata = Omit<
PartialObjectMetadata,
'standardId' | 'fields'
> & {
standardId: string | null;
fields: ComputedPartialFieldMetadata[];
};

View File

@ -0,0 +1,10 @@
import { ReflectRelationMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/reflect-relation-metadata.interface';
export type PartialRelationMetadata = ReflectRelationMetadata & {
id: string;
workspaceId: string;
fromObjectMetadataId: string;
toObjectMetadataId: string;
fromFieldMetadataId: string;
toFieldMetadataId: string;
};

View File

@ -0,0 +1,24 @@
import { GateDecoratorParams } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/gate-decorator.interface';
import { FieldMetadataType } from 'src/engine-metadata/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine-metadata/object-metadata/object-metadata.entity';
export type DynamicRelationFieldMetadataDecoratorParams = (
oppositeObjectMetadata: ObjectMetadataEntity,
) => {
standardId: string;
name: string;
label: string;
joinColumn: string;
description?: string;
icon?: string;
};
export interface ReflectDynamicRelationFieldMetadata {
type: FieldMetadataType.RELATION;
paramsFactory: DynamicRelationFieldMetadataDecoratorParams;
isNullable: boolean;
isSystem: boolean;
isCustom: boolean;
gate?: GateDecoratorParams;
}

View File

@ -0,0 +1,10 @@
import { GateDecoratorParams } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/gate-decorator.interface';
export type BaseCustomObjectMetadataDecoratorParams =
| { allowObjectNameList?: string[] }
| { denyObjectNameList?: string[] };
export type ReflectBaseCustomObjectMetadata =
BaseCustomObjectMetadataDecoratorParams & {
gate?: GateDecoratorParams;
};

View File

@ -0,0 +1,37 @@
import { FieldMetadataDefaultValue } from 'src/engine-metadata/field-metadata/interfaces/field-metadata-default-value.interface';
import { GateDecoratorParams } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/gate-decorator.interface';
import { FieldMetadataOptions } from 'src/engine-metadata/field-metadata/interfaces/field-metadata-options.interface';
import { FieldMetadataTargetColumnMap } from 'src/engine-metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
import { FieldMetadataType } from 'src/engine-metadata/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine-metadata/object-metadata/object-metadata.entity';
export interface FieldMetadataDecoratorParams<
T extends FieldMetadataType | 'default',
> {
standardId: string;
type: T;
label: string | ((objectMetadata: ObjectMetadataEntity) => string);
description?: string | ((objectMetadata: ObjectMetadataEntity) => string);
icon?: string;
defaultValue?: FieldMetadataDefaultValue<T>;
joinColumn?: string;
options?: FieldMetadataOptions<T>;
}
export interface ReflectFieldMetadata {
[key: string]: Omit<
FieldMetadataDecoratorParams<'default'>,
'defaultValue' | 'type' | 'options'
> & {
name: string;
type: FieldMetadataType;
targetColumnMap: FieldMetadataTargetColumnMap<'default'>;
isNullable: boolean;
isSystem: boolean;
isCustom: boolean;
defaultValue: FieldMetadataDefaultValue<'default'> | null;
gate?: GateDecoratorParams;
options?: FieldMetadataOptions<'default'> | null;
};
}

View File

@ -0,0 +1,18 @@
import { GateDecoratorParams } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/gate-decorator.interface';
export interface ObjectMetadataDecoratorParams {
standardId: string;
namePlural: string;
labelSingular: string;
labelPlural: string;
description?: string;
icon?: string;
}
export interface ReflectObjectMetadata extends ObjectMetadataDecoratorParams {
nameSingular: string;
targetTableName: string;
isSystem: boolean;
isCustom: boolean;
gate?: GateDecoratorParams;
}

View File

@ -0,0 +1,23 @@
import { ObjectType } from 'typeorm';
import { GateDecoratorParams } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/gate-decorator.interface';
import {
RelationOnDeleteAction,
RelationMetadataType,
} from 'src/engine-metadata/relation-metadata/relation-metadata.entity';
export interface RelationMetadataDecoratorParams<T> {
type: RelationMetadataType;
inverseSideTarget: () => ObjectType<T>;
inverseSideFieldKey?: keyof T;
onDelete?: RelationOnDeleteAction;
}
export interface ReflectRelationMetadata
extends RelationMetadataDecoratorParams<any> {
target: object;
fieldKey: string;
gate?: GateDecoratorParams;
onDelete: RelationOnDeleteAction;
}

View File

@ -0,0 +1,4 @@
export interface WorkspaceSyncContext {
workspaceId: string;
dataSourceId: string;
}