From eecb3e92a42f2bf8f9b2b8407d8ee2b27db32a48 Mon Sep 17 00:00:00 2001 From: Yannan Date: Wed, 12 Oct 2022 12:07:32 -0400 Subject: [PATCH] fix a regression introduced in #1543 --- .changeset/slimy-feet-fly.md | 7 +++++++ .changeset/swift-lies-speak.md | 5 +++++ .../shared/modifier/DomainGraphModifierHelper.ts | 5 ++--- .../RawValueSpecificationGraphModifierHelper.ts | 3 +-- .../STO_ServiceStore_ObserverHelper.ts | 4 ---- .../pure/packageableElements/domain/Multiplicity.ts | 4 ++-- .../action/changeDetection/CoreObserverHelper.ts | 10 ---------- .../changeDetection/DSL_Mapping_ObserverHelper.ts | 2 -- .../action/changeDetection/DomainObserverHelper.ts | 4 ---- .../changeDetection/RawValueSpecificationObserver.ts | 3 --- .../changeDetection/ValueSpecificationObserver.ts | 3 --- .../src/components/QueryBuilderParametersPanel.tsx | 2 ++ .../src/stores/shared/LambdaParameterState.ts | 10 ++++++---- .../shared/ValueSpecificationModifierHelper.ts | 12 +++--------- 14 files changed, 28 insertions(+), 46 deletions(-) create mode 100644 .changeset/slimy-feet-fly.md create mode 100644 .changeset/swift-lies-speak.md diff --git a/.changeset/slimy-feet-fly.md b/.changeset/slimy-feet-fly.md new file mode 100644 index 00000000000..11800d5eefb --- /dev/null +++ b/.changeset/slimy-feet-fly.md @@ -0,0 +1,7 @@ +--- +'@finos/legend-application-studio': major +'@finos/legend-extension-store-service-store': major +'@finos/legend-graph': major +--- + +**BREAKING CHANGE:** Make multiplicity's upper bound and lower bond `readonly`. diff --git a/.changeset/swift-lies-speak.md b/.changeset/swift-lies-speak.md new file mode 100644 index 00000000000..31518e9ca8d --- /dev/null +++ b/.changeset/swift-lies-speak.md @@ -0,0 +1,5 @@ +--- +'@finos/legend-query-builder': patch +--- + +Fix a regression introduced in ([#1543](https://github.com/finos/legend-studio/pull/1543)) about updating cached multiplcities in place. diff --git a/packages/legend-application-studio/src/stores/shared/modifier/DomainGraphModifierHelper.ts b/packages/legend-application-studio/src/stores/shared/modifier/DomainGraphModifierHelper.ts index 5137101844a..8705115c185 100644 --- a/packages/legend-application-studio/src/stores/shared/modifier/DomainGraphModifierHelper.ts +++ b/packages/legend-application-studio/src/stores/shared/modifier/DomainGraphModifierHelper.ts @@ -59,7 +59,6 @@ import { observe_TaggedValue, observe_Constraint, observe_GenericType, - observe_Multiplicity, observe_Type, observe_Unit, observe_RawLambda, @@ -194,7 +193,7 @@ export const property_setGenericType = action( ); export const property_setMultiplicity = action( (_property: Property | DerivedProperty, value: Multiplicity): void => { - _property.multiplicity = observe_Multiplicity(value); + _property.multiplicity = value; }, ); export const stereotypeReference_setValue = action( @@ -356,7 +355,7 @@ export const function_setReturnType = action( ); export const function_setReturnMultiplicity = action( (_func: ConcreteFunctionDefinition, val: Multiplicity): void => { - _func.returnMultiplicity = observe_Multiplicity(val); + _func.returnMultiplicity = val; }, ); diff --git a/packages/legend-application-studio/src/stores/shared/modifier/RawValueSpecificationGraphModifierHelper.ts b/packages/legend-application-studio/src/stores/shared/modifier/RawValueSpecificationGraphModifierHelper.ts index e3d6bff9375..8d9af399106 100644 --- a/packages/legend-application-studio/src/stores/shared/modifier/RawValueSpecificationGraphModifierHelper.ts +++ b/packages/legend-application-studio/src/stores/shared/modifier/RawValueSpecificationGraphModifierHelper.ts @@ -17,7 +17,6 @@ import { type Multiplicity, type RawVariableExpression, type Type, - observe_Multiplicity, observe_Type, } from '@finos/legend-graph'; import { action } from 'mobx'; @@ -34,6 +33,6 @@ export const rawVariableExpression_setType = action( ); export const rawVariableExpression_setMultiplicity = action( (target: RawVariableExpression, value: Multiplicity): void => { - target.multiplicity = observe_Multiplicity(value); + target.multiplicity = value; }, ); diff --git a/packages/legend-extension-store-service-store/src/graphManager/action/changeDetection/STO_ServiceStore_ObserverHelper.ts b/packages/legend-extension-store-service-store/src/graphManager/action/changeDetection/STO_ServiceStore_ObserverHelper.ts index 54e3975fb60..fed994203a7 100644 --- a/packages/legend-extension-store-service-store/src/graphManager/action/changeDetection/STO_ServiceStore_ObserverHelper.ts +++ b/packages/legend-extension-store-service-store/src/graphManager/action/changeDetection/STO_ServiceStore_ObserverHelper.ts @@ -21,7 +21,6 @@ import { skipObservedWithContext, observe_PackageableElementReference, observe_Abstract_Connection, - observe_Multiplicity, observe_Abstract_InstanceSetImplementation, observe_RawLambda, observe_ExternalFormatData, @@ -359,9 +358,6 @@ export const observe_LocalMappingProperty = skipObserved( multiplicity: observable, hashCode: computed, }); - - observe_Multiplicity(metamodel.multiplicity); - return metamodel; }, ); diff --git a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/domain/Multiplicity.ts b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/domain/Multiplicity.ts index 3ed130d6e66..e39f8f4c5e8 100644 --- a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/domain/Multiplicity.ts +++ b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/domain/Multiplicity.ts @@ -18,8 +18,8 @@ import { CORE_HASH_STRUCTURE } from '../../../../../graph/Core_HashUtils.js'; import { hashArray, type Hashable } from '@finos/legend-shared'; export class Multiplicity implements Hashable { - lowerBound: number; - upperBound?: number | undefined; + readonly lowerBound: number; + readonly upperBound?: number | undefined; constructor(lowerBound: number, upperBound: number | undefined) { this.lowerBound = lowerBound; diff --git a/packages/legend-graph/src/graphManager/action/changeDetection/CoreObserverHelper.ts b/packages/legend-graph/src/graphManager/action/changeDetection/CoreObserverHelper.ts index 5c7972133a2..8348d548695 100644 --- a/packages/legend-graph/src/graphManager/action/changeDetection/CoreObserverHelper.ts +++ b/packages/legend-graph/src/graphManager/action/changeDetection/CoreObserverHelper.ts @@ -23,7 +23,6 @@ import { } from 'mobx'; import type { PackageableElement } from '../../../graph/metamodel/pure/packageableElements/PackageableElement.js'; import type { PackageableElementReference } from '../../../graph/metamodel/pure/packageableElements/PackageableElementReference.js'; -import type { Multiplicity } from '../../../graph/metamodel/pure/packageableElements/domain/Multiplicity.js'; import type { InferableValue } from '../../../graph/metamodel/pure/InferableValue.js'; import type { PureGraphManagerPlugin } from '../../PureGraphManagerPlugin.js'; @@ -77,15 +76,6 @@ export const observe_PackageableElementReference = skipObserved( }), ); -export const observe_Multiplicity = skipObserved( - (metamodel: Multiplicity): Multiplicity => - makeObservable(metamodel, { - lowerBound: observable, - upperBound: observable, - hashCode: computed, - }), -); - export const observe_Abstract_InferableValue = ( metamodel: InferableValue, ): void => { diff --git a/packages/legend-graph/src/graphManager/action/changeDetection/DSL_Mapping_ObserverHelper.ts b/packages/legend-graph/src/graphManager/action/changeDetection/DSL_Mapping_ObserverHelper.ts index 68fb0d84f17..a06e6a1c864 100644 --- a/packages/legend-graph/src/graphManager/action/changeDetection/DSL_Mapping_ObserverHelper.ts +++ b/packages/legend-graph/src/graphManager/action/changeDetection/DSL_Mapping_ObserverHelper.ts @@ -91,7 +91,6 @@ import { observe_PackageableElementReference, skipObserved, skipObservedWithContext, - observe_Multiplicity, } from './CoreObserverHelper.js'; import { observe_EnumValueReference, @@ -167,7 +166,6 @@ export const observe_LocalMappingPropertyInfo = skipObserved( }); observe_PackageableElementReference(metamodel.localMappingPropertyType); - observe_Multiplicity(metamodel.localMappingPropertyMultiplicity); return metamodel; }, diff --git a/packages/legend-graph/src/graphManager/action/changeDetection/DomainObserverHelper.ts b/packages/legend-graph/src/graphManager/action/changeDetection/DomainObserverHelper.ts index 473ac23ca19..6b9719efa70 100644 --- a/packages/legend-graph/src/graphManager/action/changeDetection/DomainObserverHelper.ts +++ b/packages/legend-graph/src/graphManager/action/changeDetection/DomainObserverHelper.ts @@ -54,7 +54,6 @@ import { } from '../../../graph/metamodel/pure/packageableElements/section/Section.js'; import type { SectionIndex } from '../../../graph/metamodel/pure/packageableElements/section/SectionIndex.js'; import { - observe_Multiplicity, observe_Abstract_PackageableElement, observe_PackageableElementReference, skipObserved, @@ -336,7 +335,6 @@ export const observe_Property = skipObserved( }); observe_GenericTypeReference(metamodel.genericType); - observe_Multiplicity(metamodel.multiplicity); metamodel.stereotypes.forEach(observe_StereotypeReference); metamodel.taggedValues.forEach(observe_TaggedValue); @@ -357,7 +355,6 @@ export const observe_DerivedProperty = skipObserved( }); observe_GenericTypeReference(metamodel.genericType); - observe_Multiplicity(metamodel.multiplicity); metamodel.stereotypes.forEach(observe_StereotypeReference); metamodel.taggedValues.forEach(observe_TaggedValue); @@ -466,7 +463,6 @@ export const observe_ConcreteFunctionDefinition = skipObserved( metamodel.parameters.forEach(observe_RawVariableExpression); observe_PackageableElementReference(metamodel.returnType); - observe_Multiplicity(metamodel.returnMultiplicity); metamodel.stereotypes.forEach(observe_StereotypeReference); metamodel.taggedValues.forEach(observe_TaggedValue); diff --git a/packages/legend-graph/src/graphManager/action/changeDetection/RawValueSpecificationObserver.ts b/packages/legend-graph/src/graphManager/action/changeDetection/RawValueSpecificationObserver.ts index 29dc0dbf3d4..f64306038c2 100644 --- a/packages/legend-graph/src/graphManager/action/changeDetection/RawValueSpecificationObserver.ts +++ b/packages/legend-graph/src/graphManager/action/changeDetection/RawValueSpecificationObserver.ts @@ -24,7 +24,6 @@ import type { import type { RawVariableExpression } from '../../../graph/metamodel/pure/rawValueSpecification/RawVariableExpression.js'; import { observe_PackageableElementReference, - observe_Multiplicity, skipObserved, skipObservedWithContext, type ObserverContext, @@ -41,7 +40,6 @@ export const observe_RawPrimitiveInstanceValue = skipObserved( }); observe_PackageableElementReference(metamodel.type); - observe_Multiplicity(metamodel.multiplicity); return metamodel; }, @@ -65,7 +63,6 @@ export const observe_RawVariableExpression = skipObserved( }); observe_PackageableElementReference(metamodel.type); - observe_Multiplicity(metamodel.multiplicity); return metamodel; }, diff --git a/packages/legend-graph/src/graphManager/action/changeDetection/ValueSpecificationObserver.ts b/packages/legend-graph/src/graphManager/action/changeDetection/ValueSpecificationObserver.ts index 44be9731cde..ee34f8d0874 100644 --- a/packages/legend-graph/src/graphManager/action/changeDetection/ValueSpecificationObserver.ts +++ b/packages/legend-graph/src/graphManager/action/changeDetection/ValueSpecificationObserver.ts @@ -60,7 +60,6 @@ import { type ObserverContext, skipObservedWithContext, skipObserved, - observe_Multiplicity, observe_PackageableElementReference, } from './CoreObserverHelper.js'; import { @@ -81,7 +80,6 @@ const observe_Abstract_ValueSpecification = ( if (metamodel.genericType) { observe_GenericTypeReference(metamodel.genericType); } - observe_Multiplicity(metamodel.multiplicity); }; export const observe_VariableExpression = skipObserved( @@ -266,7 +264,6 @@ const observe_FunctionType = skipObserved( metamodel.parameters.forEach((parameter) => observe_VariableExpression(parameter), ); - observe_Multiplicity(metamodel.returnMultiplicity); return metamodel; }, diff --git a/packages/legend-query-builder/src/components/QueryBuilderParametersPanel.tsx b/packages/legend-query-builder/src/components/QueryBuilderParametersPanel.tsx index bbe79d3bc6d..f6fc76c26d1 100644 --- a/packages/legend-query-builder/src/components/QueryBuilderParametersPanel.tsx +++ b/packages/legend-query-builder/src/components/QueryBuilderParametersPanel.tsx @@ -114,6 +114,7 @@ const VariableExpressionEditor = observer( event, ) => { lambdaParameterState.changeMultiplicity( + varState, parseInt(event.target.value), multiplity.upperBound, ); @@ -133,6 +134,7 @@ const VariableExpressionEditor = observer( !isNaN(parseInt(value, 10)) ) { lambdaParameterState.changeMultiplicity( + varState, multiplity.lowerBound, value === MULTIPLICITY_INFINITE || value === '' ? undefined diff --git a/packages/legend-query-builder/src/stores/shared/LambdaParameterState.ts b/packages/legend-query-builder/src/stores/shared/LambdaParameterState.ts index cc82bb3cc02..f733b37189c 100644 --- a/packages/legend-query-builder/src/stores/shared/LambdaParameterState.ts +++ b/packages/legend-query-builder/src/stores/shared/LambdaParameterState.ts @@ -47,9 +47,8 @@ import { import { makeObservable, observable, action, computed } from 'mobx'; import { generateVariableExpressionMockValue } from './ValueSpecificationEditorHelper.js'; import { - multiplicity_setLowerBound, - multiplicity_setUpperBound, valueSpecification_setGenericType, + valueSpecification_setMultiplicity, } from './ValueSpecificationModifierHelper.js'; export enum PARAMETER_SUBMIT_ACTION { @@ -158,6 +157,7 @@ export class LambdaParameterState implements Hashable { } changeMultiplicity( + variableExpression: VariableExpression, lowerBound: number, uppderBound: number | undefined, ): void { @@ -166,8 +166,10 @@ export class LambdaParameterState implements Hashable { current.lowerBound !== lowerBound || current.upperBound !== uppderBound ) { - multiplicity_setLowerBound(current, lowerBound); - multiplicity_setUpperBound(current, uppderBound); + valueSpecification_setMultiplicity( + variableExpression, + this.graph.getMultiplicity(lowerBound, uppderBound), + ); this.mockParameterValue(); } } diff --git a/packages/legend-query-builder/src/stores/shared/ValueSpecificationModifierHelper.ts b/packages/legend-query-builder/src/stores/shared/ValueSpecificationModifierHelper.ts index ab2e904ff61..dfa61456c5e 100644 --- a/packages/legend-query-builder/src/stores/shared/ValueSpecificationModifierHelper.ts +++ b/packages/legend-query-builder/src/stores/shared/ValueSpecificationModifierHelper.ts @@ -45,15 +45,9 @@ export const valueSpecification_setGenericType = action( }, ); -export const multiplicity_setLowerBound = action( - (target: Multiplicity, val: number): void => { - target.lowerBound = val; - }, -); - -export const multiplicity_setUpperBound = action( - (target: Multiplicity, val: number | undefined): void => { - target.upperBound = val; +export const valueSpecification_setMultiplicity = action( + (target: ValueSpecification, val: Multiplicity): void => { + target.multiplicity = val; }, );