Skip to content

Commit f74e79f

Browse files
committed
add optional maybeAspectRatioFilter arg to listItems Query so the FrontsPinboardArticleButton can request matching crops without having to get ALL the items for that pinboard and filter out the majority that it doesn't need
1 parent e792227 commit f74e79f

File tree

5 files changed

+39
-48
lines changed

5 files changed

+39
-48
lines changed

cdk/lib/__snapshots__/stack.test.ts.snap

+24-24
Original file line numberDiff line numberDiff line change
@@ -2449,7 +2449,7 @@ Object {
24492449
24502450
type Query {
24512451
# database-bridge-lambda queries
2452-
listItems(pinboardId: String!): [Item]
2452+
listItems(pinboardId: String!, maybeAspectRatioFilter: String): [Item]
24532453
listLastItemSeenByUsers(pinboardId: String!): [LastItemSeenByUser]
24542454
getMyUser: MyUser
24552455
searchMentionableUsers(prefix: String!): UsersAndGroups
@@ -2680,7 +2680,7 @@ type PinboardIdWithItemCounts {
26802680
"DataSourceName": "database_bridge_lambda_ds",
26812681
"FieldName": "addManuallyOpenedPinboardIds",
26822682
"Kind": "UNIT",
2683-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2683+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
26842684
$util.toJson($ctx.result)",
26852685
"TypeName": "Mutation",
26862686
},
@@ -2701,7 +2701,7 @@ $util.toJson($ctx.result)",
27012701
"DataSourceName": "database_bridge_lambda_ds",
27022702
"FieldName": "changeFeatureFlag",
27032703
"Kind": "UNIT",
2704-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2704+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
27052705
$util.toJson($ctx.result)",
27062706
"TypeName": "Mutation",
27072707
},
@@ -2722,7 +2722,7 @@ $util.toJson($ctx.result)",
27222722
"DataSourceName": "database_bridge_lambda_ds",
27232723
"FieldName": "claimItem",
27242724
"Kind": "UNIT",
2725-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2725+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
27262726
$util.toJson($ctx.result)",
27272727
"TypeName": "Mutation",
27282728
},
@@ -2743,7 +2743,7 @@ $util.toJson($ctx.result)",
27432743
"DataSourceName": "database_bridge_lambda_ds",
27442744
"FieldName": "createItem",
27452745
"Kind": "UNIT",
2746-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2746+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
27472747
$util.toJson($ctx.result)",
27482748
"TypeName": "Mutation",
27492749
},
@@ -2764,7 +2764,7 @@ $util.toJson($ctx.result)",
27642764
"DataSourceName": "database_bridge_lambda_ds",
27652765
"FieldName": "deleteItem",
27662766
"Kind": "UNIT",
2767-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2767+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
27682768
$util.toJson($ctx.result)",
27692769
"TypeName": "Mutation",
27702770
},
@@ -2785,7 +2785,7 @@ $util.toJson($ctx.result)",
27852785
"DataSourceName": "database_bridge_lambda_ds",
27862786
"FieldName": "editItem",
27872787
"Kind": "UNIT",
2788-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2788+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
27892789
$util.toJson($ctx.result)",
27902790
"TypeName": "Mutation",
27912791
},
@@ -2806,7 +2806,7 @@ $util.toJson($ctx.result)",
28062806
"DataSourceName": "database_bridge_lambda_ds",
28072807
"FieldName": "removeManuallyOpenedPinboardIds",
28082808
"Kind": "UNIT",
2809-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2809+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
28102810
$util.toJson($ctx.result)",
28112811
"TypeName": "Mutation",
28122812
},
@@ -2827,7 +2827,7 @@ $util.toJson($ctx.result)",
28272827
"DataSourceName": "database_bridge_lambda_ds",
28282828
"FieldName": "seenItem",
28292829
"Kind": "UNIT",
2830-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2830+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
28312831
$util.toJson($ctx.result)",
28322832
"TypeName": "Mutation",
28332833
},
@@ -2848,7 +2848,7 @@ $util.toJson($ctx.result)",
28482848
"DataSourceName": "database_bridge_lambda_ds",
28492849
"FieldName": "setWebPushSubscriptionForUser",
28502850
"Kind": "UNIT",
2851-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2851+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
28522852
$util.toJson($ctx.result)",
28532853
"TypeName": "Mutation",
28542854
},
@@ -2869,7 +2869,7 @@ $util.toJson($ctx.result)",
28692869
"DataSourceName": "database_bridge_lambda_ds",
28702870
"FieldName": "visitTourStep",
28712871
"Kind": "UNIT",
2872-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2872+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
28732873
$util.toJson($ctx.result)",
28742874
"TypeName": "Mutation",
28752875
},
@@ -2890,7 +2890,7 @@ $util.toJson($ctx.result)",
28902890
"DataSourceName": "database_bridge_lambda_ds",
28912891
"FieldName": "getGroupPinboardIds",
28922892
"Kind": "UNIT",
2893-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2893+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
28942894
$util.toJson($ctx.result)",
28952895
"TypeName": "Query",
28962896
},
@@ -2911,7 +2911,7 @@ $util.toJson($ctx.result)",
29112911
"DataSourceName": "database_bridge_lambda_ds",
29122912
"FieldName": "getItemCounts",
29132913
"Kind": "UNIT",
2914-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2914+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
29152915
$util.toJson($ctx.result)",
29162916
"TypeName": "Query",
29172917
},
@@ -2932,7 +2932,7 @@ $util.toJson($ctx.result)",
29322932
"DataSourceName": "database_bridge_lambda_ds",
29332933
"FieldName": "getMyUser",
29342934
"Kind": "UNIT",
2935-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2935+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
29362936
$util.toJson($ctx.result)",
29372937
"TypeName": "Query",
29382938
},
@@ -2953,7 +2953,7 @@ $util.toJson($ctx.result)",
29532953
"DataSourceName": "database_bridge_lambda_ds",
29542954
"FieldName": "getUsers",
29552955
"Kind": "UNIT",
2956-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2956+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
29572957
$util.toJson($ctx.result)",
29582958
"TypeName": "Query",
29592959
},
@@ -2974,7 +2974,7 @@ $util.toJson($ctx.result)",
29742974
"DataSourceName": "database_bridge_lambda_ds",
29752975
"FieldName": "listItems",
29762976
"Kind": "UNIT",
2977-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2977+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
29782978
$util.toJson($ctx.result)",
29792979
"TypeName": "Query",
29802980
},
@@ -2995,7 +2995,7 @@ $util.toJson($ctx.result)",
29952995
"DataSourceName": "database_bridge_lambda_ds",
29962996
"FieldName": "listLastItemSeenByUsers",
29972997
"Kind": "UNIT",
2998-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
2998+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
29992999
$util.toJson($ctx.result)",
30003000
"TypeName": "Query",
30013001
},
@@ -3016,7 +3016,7 @@ $util.toJson($ctx.result)",
30163016
"DataSourceName": "database_bridge_lambda_ds",
30173017
"FieldName": "searchMentionableUsers",
30183018
"Kind": "UNIT",
3019-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3019+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
30203020
$util.toJson($ctx.result)",
30213021
"TypeName": "Query",
30223022
},
@@ -3145,7 +3145,7 @@ $util.toJson($ctx.result)",
31453145
"DataSourceName": "grid_bridge_lambda_ds",
31463146
"FieldName": "asGridPayload",
31473147
"Kind": "UNIT",
3148-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3148+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
31493149
$util.toJson($ctx.result)",
31503150
"TypeName": "Query",
31513151
},
@@ -3166,7 +3166,7 @@ $util.toJson($ctx.result)",
31663166
"DataSourceName": "grid_bridge_lambda_ds",
31673167
"FieldName": "getGridSearchSummary",
31683168
"Kind": "UNIT",
3169-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3169+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
31703170
$util.toJson($ctx.result)",
31713171
"TypeName": "Query",
31723172
},
@@ -3295,7 +3295,7 @@ $util.toJson($ctx.result)",
32953295
"DataSourceName": "workflow_bridge_lambda_ds",
32963296
"FieldName": "getPinboardByComposerId",
32973297
"Kind": "UNIT",
3298-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3298+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
32993299
$util.toJson($ctx.result)",
33003300
"TypeName": "Query",
33013301
},
@@ -3316,7 +3316,7 @@ $util.toJson($ctx.result)",
33163316
"DataSourceName": "workflow_bridge_lambda_ds",
33173317
"FieldName": "getPinboardsByIds",
33183318
"Kind": "UNIT",
3319-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3319+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
33203320
$util.toJson($ctx.result)",
33213321
"TypeName": "Query",
33223322
},
@@ -3337,7 +3337,7 @@ $util.toJson($ctx.result)",
33373337
"DataSourceName": "workflow_bridge_lambda_ds",
33383338
"FieldName": "getPinboardsByPaths",
33393339
"Kind": "UNIT",
3340-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3340+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
33413341
$util.toJson($ctx.result)",
33423342
"TypeName": "Query",
33433343
},
@@ -3358,7 +3358,7 @@ $util.toJson($ctx.result)",
33583358
"DataSourceName": "workflow_bridge_lambda_ds",
33593359
"FieldName": "listPinboards",
33603360
"Kind": "UNIT",
3361-
"ResponseMappingTemplate": "## schema checksum : 707f5a6af9682053bcaf47d47c4f26d0
3361+
"ResponseMappingTemplate": "## schema checksum : da5ab4d1435d8fb629c068ee4933d29c
33623362
$util.toJson($ctx.result)",
33633363
"TypeName": "Query",
33643364
},

client/gql.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ const itemReturnFields = `
8181

8282
// TODO: consider updating the resolver (cdk/stack.ts) to use a Query with a secondary index (if performance degrades when we have lots of items)
8383
export const gqlGetInitialItems = gql`
84-
query MyQuery($pinboardId: String!) {
85-
listItems(pinboardId: $pinboardId) {
84+
query MyQuery($pinboardId: String!, $maybeAspectRatioFilter: String) {
85+
listItems(pinboardId: $pinboardId, maybeAspectRatioFilter: $maybeAspectRatioFilter) {
8686
${itemReturnFields}
8787
}
8888
}

client/src/fronts/frontsPinboardArticleButton.tsx

+6-20
Original file line numberDiff line numberDiff line change
@@ -34,36 +34,22 @@ export const FrontsPinboardArticleButton = ({
3434
Array<[PayloadWithThumbnail, Item]>
3535
>([]);
3636

37-
const [getItems, { loading }] = useLazyQuery(
38-
gqlGetInitialItems //TODO consider creating new query,
39-
);
37+
const [getItems, { loading }] = useLazyQuery(gqlGetInitialItems);
4038

4139
useEffect(() => {
4240
if (isPinboardData(maybePinboardData) && withDraggableThumbsOfRatio) {
4341
getItems({
4442
variables: {
4543
pinboardId: maybePinboardData.id,
44+
maybeAspectRatioFilter: withDraggableThumbsOfRatio,
4645
},
4746
}).then(({ data }) => {
4847
data?.listItems &&
4948
setCropsAtRequiredRatio(
50-
data.listItems.reduce(
51-
(acc: Array<[PayloadWithThumbnail, Item]>, item: Item) => {
52-
const parsedPayload =
53-
item.payload &&
54-
(JSON.parse(item.payload) as PayloadWithThumbnail);
55-
if (
56-
item.type === "grid-crop" &&
57-
parsedPayload &&
58-
parsedPayload.aspectRatio === withDraggableThumbsOfRatio
59-
) {
60-
return [...acc, [parsedPayload, item]];
61-
} else {
62-
return acc;
63-
}
64-
},
65-
[]
66-
)
49+
data.listItems.map((item: Item) => [
50+
JSON.parse(item.payload!),
51+
item,
52+
])
6753
);
6854
});
6955
}

database-bridge-lambda/src/sql/Item.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,18 @@ export const deleteItem = async (
9797

9898
export const listItems = (
9999
sql: Sql,
100-
args: { pinboardId: string },
100+
args: { pinboardId: string; maybeAspectRatioFilter?: string },
101101
userEmail: string
102102
) => sql`
103103
SELECT ${fragmentItemFields(sql, userEmail)}
104104
FROM "Item"
105105
WHERE "pinboardId" = ${args.pinboardId}
106106
AND "isArchived" = false
107+
${
108+
args.maybeAspectRatioFilter
109+
? sql`AND "type" = 'grid-crop' AND "payload" ->> 'aspectRatio' = ${args.maybeAspectRatioFilter}`
110+
: sql``
111+
}
107112
`;
108113

109114
export const claimItem = (

shared/graphql/schema.graphql

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ schema {
66

77
type Query {
88
# database-bridge-lambda queries
9-
listItems(pinboardId: String!): [Item]
9+
listItems(pinboardId: String!, maybeAspectRatioFilter: String): [Item]
1010
listLastItemSeenByUsers(pinboardId: String!): [LastItemSeenByUser]
1111
getMyUser: MyUser
1212
searchMentionableUsers(prefix: String!): UsersAndGroups

0 commit comments

Comments
 (0)