Skip to content

Commit

Permalink
chore: account for all associated fields in automapping and removing …
Browse files Browse the repository at this point in the history
…relationship logic
  • Loading branch information
Hein Jeong authored and hein-j committed Dec 13, 2022
1 parent fec2790 commit 13d8117
Show file tree
Hide file tree
Showing 7 changed files with 572 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2458,8 +2458,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner: undefined,
CompositeToys: [],
CompositeVets: [],
compositeDogCompositeBowlSize: undefined,
compositeDogCompositeOwnerFirstName: undefined,
};
const [name, setName] = React.useState(initialValues.name);
const [description, setDescription] = React.useState(
Expand All @@ -2477,12 +2475,6 @@ export default function UpdateCompositeDogForm(props) {
const [CompositeVets, setCompositeVets] = React.useState(
initialValues.CompositeVets
);
const [compositeDogCompositeBowlSize, setCompositeDogCompositeBowlSize] =
React.useState(initialValues.compositeDogCompositeBowlSize);
const [
compositeDogCompositeOwnerFirstName,
setCompositeDogCompositeOwnerFirstName,
] = React.useState(initialValues.compositeDogCompositeOwnerFirstName);
const [errors, setErrors] = React.useState({});
const resetStateValues = () => {
const cleanValues = compositeDogRecord
Expand All @@ -2509,10 +2501,6 @@ export default function UpdateCompositeDogForm(props) {
setCompositeVets(cleanValues.CompositeVets ?? []);
setCurrentCompositeVetsValue(undefined);
setCurrentCompositeVetsDisplayValue(\\"\\");
setCompositeDogCompositeBowlSize(cleanValues.compositeDogCompositeBowlSize);
setCompositeDogCompositeOwnerFirstName(
cleanValues.compositeDogCompositeOwnerFirstName
);
setErrors({});
};
const [compositeDogRecord, setCompositeDogRecord] =
Expand Down Expand Up @@ -2642,8 +2630,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner: [],
CompositeToys: [],
CompositeVets: [],
compositeDogCompositeBowlSize: [],
compositeDogCompositeOwnerFirstName: [],
};
const runValidationTasks = async (
fieldName,
Expand Down Expand Up @@ -2676,8 +2662,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const validationResponses = await Promise.all(
Object.keys(validations).reduce((promises, fieldName) => {
Expand Down Expand Up @@ -2815,10 +2799,14 @@ export default function UpdateCompositeDogForm(props) {
DataStore.save(
CompositeDog.copyOf(compositeDogRecord, (updated) => {
Object.assign(updated, modelFields);
if (!modelFields.CompositeBowl)
if (!modelFields.CompositeBowl) {
updated.compositeDogCompositeBowlShape = undefined;
if (!modelFields.CompositeOwner)
updated.compositeDogCompositeBowlSize = undefined;
}
if (!modelFields.CompositeOwner) {
updated.compositeDogCompositeOwnerLastName = undefined;
updated.compositeDogCompositeOwnerFirstName = undefined;
}
})
)
);
Expand Down Expand Up @@ -2850,8 +2838,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
value = result?.name ?? value;
Expand Down Expand Up @@ -2881,8 +2867,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
value = result?.description ?? value;
Expand All @@ -2909,8 +2893,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
value = result?.CompositeBowl ?? value;
Expand Down Expand Up @@ -2988,8 +2970,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner: value,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
value = result?.CompositeOwner ?? value;
Expand Down Expand Up @@ -3066,8 +3046,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys: values,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
values = result?.CompositeToys ?? values;
Expand Down Expand Up @@ -3145,8 +3123,6 @@ export default function UpdateCompositeDogForm(props) {
CompositeOwner,
CompositeToys,
CompositeVets: values,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
values = result?.CompositeVets ?? values;
Expand Down Expand Up @@ -3213,78 +3189,6 @@ export default function UpdateCompositeDogForm(props) {
{...getOverrideProps(overrides, \\"CompositeVets\\")}
></Autocomplete>
</ArrayField>
<TextField
label=\\"Composite dog composite bowl size\\"
isRequired={false}
isReadOnly={false}
defaultValue={compositeDogCompositeBowlSize}
onChange={(e) => {
let { value } = e.target;
if (onChange) {
const modelFields = {
name,
description,
CompositeBowl,
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize: value,
compositeDogCompositeOwnerFirstName,
};
const result = onChange(modelFields);
value = result?.compositeDogCompositeBowlSize ?? value;
}
if (errors.compositeDogCompositeBowlSize?.hasError) {
runValidationTasks(\\"compositeDogCompositeBowlSize\\", value);
}
setCompositeDogCompositeBowlSize(value);
}}
onBlur={() =>
runValidationTasks(
\\"compositeDogCompositeBowlSize\\",
compositeDogCompositeBowlSize
)
}
errorMessage={errors.compositeDogCompositeBowlSize?.errorMessage}
hasError={errors.compositeDogCompositeBowlSize?.hasError}
{...getOverrideProps(overrides, \\"compositeDogCompositeBowlSize\\")}
></TextField>
<TextField
label=\\"Composite dog composite owner first name\\"
isRequired={false}
isReadOnly={false}
defaultValue={compositeDogCompositeOwnerFirstName}
onChange={(e) => {
let { value } = e.target;
if (onChange) {
const modelFields = {
name,
description,
CompositeBowl,
CompositeOwner,
CompositeToys,
CompositeVets,
compositeDogCompositeBowlSize,
compositeDogCompositeOwnerFirstName: value,
};
const result = onChange(modelFields);
value = result?.compositeDogCompositeOwnerFirstName ?? value;
}
if (errors.compositeDogCompositeOwnerFirstName?.hasError) {
runValidationTasks(\\"compositeDogCompositeOwnerFirstName\\", value);
}
setCompositeDogCompositeOwnerFirstName(value);
}}
onBlur={() =>
runValidationTasks(
\\"compositeDogCompositeOwnerFirstName\\",
compositeDogCompositeOwnerFirstName
)
}
errorMessage={errors.compositeDogCompositeOwnerFirstName?.errorMessage}
hasError={errors.compositeDogCompositeOwnerFirstName?.hasError}
{...getOverrideProps(overrides, \\"compositeDogCompositeOwnerFirstName\\")}
></TextField>
<Flex
justifyContent=\\"space-between\\"
{...getOverrideProps(overrides, \\"CTAFlex\\")}
Expand Down Expand Up @@ -3331,8 +3235,6 @@ export declare type UpdateCompositeDogFormInputValues = {
CompositeOwner?: CompositeOwner0;
CompositeToys?: CompositeToy[];
CompositeVets?: CompositeVet[];
compositeDogCompositeBowlSize?: string;
compositeDogCompositeOwnerFirstName?: string;
};
export declare type UpdateCompositeDogFormValidationValues = {
name?: ValidationFunction<string>;
Expand All @@ -3341,8 +3243,6 @@ export declare type UpdateCompositeDogFormValidationValues = {
CompositeOwner?: ValidationFunction<CompositeOwner0>;
CompositeToys?: ValidationFunction<CompositeToy>;
CompositeVets?: ValidationFunction<CompositeVet>;
compositeDogCompositeBowlSize?: ValidationFunction<string>;
compositeDogCompositeOwnerFirstName?: ValidationFunction<string>;
};
export declare type PrimitiveOverrideProps<T> = Partial<T> & React.DOMAttributes<HTMLDivElement>;
export declare type UpdateCompositeDogFormOverridesProps = {
Expand All @@ -3353,8 +3253,6 @@ export declare type UpdateCompositeDogFormOverridesProps = {
CompositeOwner?: PrimitiveOverrideProps<AutocompleteProps>;
CompositeToys?: PrimitiveOverrideProps<AutocompleteProps>;
CompositeVets?: PrimitiveOverrideProps<AutocompleteProps>;
compositeDogCompositeBowlSize?: PrimitiveOverrideProps<TextFieldProps>;
compositeDogCompositeOwnerFirstName?: PrimitiveOverrideProps<TextFieldProps>;
} & EscapeHatchProps;
export declare type UpdateCompositeDogFormProps = React.PropsWithChildren<{
overrides?: UpdateCompositeDogFormOverridesProps | undefined | null;
Expand Down Expand Up @@ -3853,8 +3751,9 @@ export default function UpdateCPKTeacherForm(props) {
DataStore.save(
CPKTeacher.copyOf(cPKTeacherRecord, (updated) => {
Object.assign(updated, modelFields);
if (!modelFields.CPKStudent)
if (!modelFields.CPKStudent) {
updated.cPKTeacherCPKStudentId = undefined;
}
})
)
);
Expand Down Expand Up @@ -10359,7 +10258,9 @@ export default function MyMemberForm(props) {
await DataStore.save(
Member.copyOf(memberRecord, (updated) => {
Object.assign(updated, modelFields);
if (!modelFields.Team) updated.teamMembersId = undefined;
if (!modelFields.Team) {
updated.teamMembersId = undefined;
}
})
);
if (onSuccess) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1774,13 +1774,13 @@ export const getRelationshipBasedRecordUpdateStatements = ({
fieldConfigs: Record<string, FieldConfigMetadata>;
}): IfStatement[] => {
const statements: IfStatement[] = [];
const modelToFieldsMap: { [modelName: string]: { model: string; scalar: string } } = {};
const modelToFieldsMap: { [modelName: string]: { model: string; scalar: string[] } } = {};

Object.entries(fieldConfigs).forEach(([fieldName, config]) => {
if (config.relationship && (config.relationship.type === 'HAS_ONE' || config.relationship?.type === 'BELONGS_TO')) {
const { associatedField, relatedModelName } = config.relationship;
if (isModelDataType(config) && associatedField) {
modelToFieldsMap[relatedModelName] = { model: fieldName, scalar: associatedField };
const { associatedFields, relatedModelName } = config.relationship;
if (isModelDataType(config) && associatedFields) {
modelToFieldsMap[relatedModelName] = { model: fieldName, scalar: associatedFields };
} else {
// if the scalar relationship field is mapped on the form,
// we do not need to set its value at DataStore.save
Expand All @@ -1790,19 +1790,24 @@ export const getRelationshipBasedRecordUpdateStatements = ({
});

// if(!modelFields.HasOneUser) updated.webUserId = undefined;
Object.values(modelToFieldsMap).forEach(({ model: modelField, scalar: scalarField }) => {
Object.values(modelToFieldsMap).forEach(({ model: modelField, scalar: scalarFields }) => {
statements.push(
factory.createIfStatement(
factory.createPrefixUnaryExpression(
SyntaxKind.ExclamationToken,
buildAccessChain([modelFieldsObjectName, modelField], false),
),
factory.createExpressionStatement(
factory.createBinaryExpression(
buildAccessChain([updatedObjectName, scalarField], false),
factory.createToken(SyntaxKind.EqualsToken),
factory.createIdentifier('undefined'),
factory.createBlock(
scalarFields.map((scalarField) =>
factory.createExpressionStatement(
factory.createBinaryExpression(
buildAccessChain([updatedObjectName, scalarField], false),
factory.createToken(SyntaxKind.EqualsToken),
factory.createIdentifier('undefined'),
),
),
),
true,
),
undefined,
),
Expand Down
Loading

0 comments on commit 13d8117

Please sign in to comment.