Spaces:
Build error
Build error
File size: 2,676 Bytes
d9494a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import { SetMetadata } from '@nestjs/common';
import { type AllMetadataName } from 'twenty-shared/metadata';
import { type AllFlatEntityOperationRecordByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-operation-record-by-metadata-name.type';
import { type MetadataFlatEntityAndRelatedFlatEntityMapsForSideEffect } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity-and-related-flat-entity-maps-for-side-effect.type';
import { type MetadataUniversalFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-universal-flat-entity.type';
import { METADATA_SIDE_EFFECT_HANDLER_METADATA_KEY } from 'src/engine/metadata-modules/metadata-side-effect/constants/metadata-side-effect-handler-metadata-key.constant';
import { type MetadataSideEffectContext } from 'src/engine/metadata-modules/metadata-side-effect/types/metadata-side-effect-context.type';
import { type MetadataSideEffectOperation } from 'src/engine/metadata-modules/metadata-side-effect/types/metadata-side-effect-operation.type';
import { type MetadataSideEffectResult } from 'src/engine/metadata-modules/metadata-side-effect/types/metadata-side-effect-result.type';
export type BuildSideEffectsArgs<P extends AllMetadataName> = {
flatEntity: MetadataUniversalFlatEntity<P>;
allFlatEntityOperationRecordByMetadataName: AllFlatEntityOperationRecordByMetadataName;
relatedFlatEntityMaps: MetadataFlatEntityAndRelatedFlatEntityMapsForSideEffect<P>;
context: MetadataSideEffectContext;
};
export abstract class BaseMetadataSideEffectHandlerService<
P extends AllMetadataName,
> {
public operation: MetadataSideEffectOperation;
public metadataName: P;
public sideEffectName: string;
public sideEffectDescription: string;
abstract buildSideEffects(
args: BuildSideEffectsArgs<P>,
): MetadataSideEffectResult;
}
type MetadataSideEffectHandlerDeclaration<P extends AllMetadataName> = {
operation: MetadataSideEffectOperation;
metadataName: P;
name: string;
description: string;
};
export function MetadataSideEffectHandler<P extends AllMetadataName>({
operation,
metadataName,
name,
description,
}: MetadataSideEffectHandlerDeclaration<P>): typeof BaseMetadataSideEffectHandlerService<P> {
abstract class SideEffectHandlerService extends BaseMetadataSideEffectHandlerService<P> {
operation = operation;
metadataName = metadataName;
sideEffectName = name;
sideEffectDescription = description;
}
SetMetadata(METADATA_SIDE_EFFECT_HANDLER_METADATA_KEY, {
operation,
metadataName,
name,
description,
})(SideEffectHandlerService);
return SideEffectHandlerService;
}
|