Skip to content

Commit

Permalink
fix: createDatastorePredicate call was added (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
frimfram committed Oct 28, 2021
1 parent 325e26c commit fbee20c
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,13 @@ export default function CollectionOfCustomButtons(
...rest
} = props;
const overrides = { ...overridesProp };
const buttonUserFilter = {
const buttonUserFilterObj = {
and: [
{ field: \\"age\\", operand: \\"10\\", operator: \\"gt\\" },
{ field: \\"lastName\\", operand: \\"L\\", operator: \\"beginsWith\\" },
],
};
const buttonUserFilter = createDataStorePredicate(buttonUserFilterObj);
const buttonUser =
items !== undefined
? items
Expand All @@ -192,11 +193,12 @@ export default function CollectionOfCustomButtons(
model: User,
criteria: buttonUserFilter,
}).items;
const buttonColorFilter = {
const buttonColorFilterObj = {
field: \\"userID\\",
operand: \\"user@email.com\\",
operator: \\"eq\\",
};
const buttonColorFilter = createDataStorePredicate(buttonColorFilterObj);
const { item: buttonColor } = useDataStoreBinding({
type: \\"record\\",
model: UserPreferences,
Expand Down Expand Up @@ -266,12 +268,13 @@ export default function CollectionOfCustomButtons(
...rest
} = props;
const overrides = { ...overridesProp };
const buttonUserFilter = {
const buttonUserFilterObj = {
and: [
{ field: \\"age\\", operand: \\"10\\", operator: \\"gt\\" },
{ field: \\"lastName\\", operand: \\"L\\", operator: \\"beginsWith\\" },
],
};
const buttonUserFilter = createDataStorePredicate(buttonUserFilterObj);
const buttonUserPagination = {
sort: (s) =>
s.firstName(SortDirection.ASCENDING).lastName(SortDirection.DESCENDING),
Expand All @@ -285,11 +288,12 @@ export default function CollectionOfCustomButtons(
criteria: buttonUserFilter,
pagination: buttonUserPagination,
}).items;
const buttonColorFilter = {
const buttonColorFilterObj = {
field: \\"userID\\",
operand: \\"user@email.com\\",
operator: \\"eq\\",
};
const buttonColorFilter = createDataStorePredicate(buttonColorFilterObj);
const { item: buttonColor } = useDataStoreBinding({
type: \\"record\\",
model: UserPreferences,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,7 @@ export abstract class ReactStudioTemplateRenderer extends StudioTemplateRenderer
const [propName, { model, sort, predicate }] = collectionProp;
if (predicate) {
statements.push(this.buildPredicateDeclaration(propName, predicate));
statements.push(this.buildCreateDataStorePredicateCall(propName));
}
if (sort) {
this.importCollection.addImport('@aws-amplify/ui-react', 'SortDirection');
Expand Down Expand Up @@ -668,6 +669,25 @@ export abstract class ReactStudioTemplateRenderer extends StudioTemplateRenderer
return statements;
}

private buildCreateDataStorePredicateCall(name: string): Statement {
return factory.createVariableStatement(
undefined,
factory.createVariableDeclarationList(
[
factory.createVariableDeclaration(
factory.createIdentifier(this.getFilterName(name)),
undefined,
undefined,
factory.createCallExpression(factory.createIdentifier('createDataStorePredicate'), undefined, [
factory.createIdentifier(this.getFilterObjName(name)),
]),
),
],
ts.NodeFlags.Const,
),
);
}

private buildUseDataStoreBindingStatements(component: StudioComponent): Statement[] {
const statements: Statement[] = [];

Expand All @@ -679,6 +699,7 @@ export abstract class ReactStudioTemplateRenderer extends StudioTemplateRenderer
const { bindingProperties } = binding;
if ('predicate' in bindingProperties && bindingProperties.predicate !== undefined) {
statements.push(this.buildPredicateDeclaration(propName, bindingProperties.predicate));
statements.push(this.buildCreateDataStorePredicateCall(propName));
const { model } = bindingProperties;
this.importCollection.addImport('../models', model);
statements.push(
Expand Down Expand Up @@ -912,7 +933,7 @@ export abstract class ReactStudioTemplateRenderer extends StudioTemplateRenderer
factory.createVariableDeclarationList(
[
factory.createVariableDeclaration(
factory.createIdentifier(this.getFilterName(name)),
factory.createIdentifier(this.getFilterObjName(name)),
undefined,
undefined,
this.predicateToObjectLiteralExpression(predicate),
Expand All @@ -927,6 +948,10 @@ export abstract class ReactStudioTemplateRenderer extends StudioTemplateRenderer
return `${propName}Pagination`;
}

private getFilterObjName(propName: string): string {
return `${propName}FilterObj`;
}

private getFilterName(propName: string): string {
return `${propName}Filter`;
}
Expand Down

0 comments on commit fbee20c

Please sign in to comment.