Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize App type resolvers #12804

Merged
merged 2 commits into from May 17, 2023
Merged

Conversation

tomaszszymanski129
Copy link
Member

@tomaszszymanski129 tomaszszymanski129 commented May 11, 2023

I want to merge this change because it optimizes resolvers for tokens and webhooks on App type.
Also adds benchmark tests for those.
Resolves #12795.

Local testing with queries count:
❌ Before dataloader: 13
✅ After dataloader: 9

Impact

  • New migrations
  • New/Updated API fields or mutations
  • Deprecated API fields or mutations
  • Removed API types, fields, or mutations
  • Documentation needs to be updated

Pull Request Checklist

  • Privileged queries and mutations are guarded by proper permission checks
  • Database queries are optimized and the number of queries is constant
  • Database migration files are up to date
  • The changes are tested
  • GraphQL schema and type definitions are up to date
  • Changes are mentioned in the changelog

@db-queries
Copy link

db-queries bot commented May 11, 2023

Here is the report for 8bbc45f (saleor:app-resolvers-optimizations-39)
Missing base report (2a6a6eb). The results couldn't be compared.

No differences were found.

# saleor.graphql.accountbenchmark account
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  addresses for federation query count                                    	          9	          9	              2
  customers query                                                         	         48	         48	              0
  delete staff members                                                    	         37	         37	              1
  query staff user                                                        	         18	         18	              3
  staff create                                                            	         23	         23	              3
  staff update groups and permissions                                     	         36	         36	              5
  users for federation query count                                        	          8	          8	              3

# saleor.graphql.accountbenchmark permission group
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  groups for federation query count                                       	          5	          5	              2
  permission group create                                                 	         21	         21	              2
  permission group delete                                                 	         22	         22	              3
  permission group query                                                  	          7	          7	              0
  permission group update                                                 	         37	         37	              1
  permission group update remove users with manage staff                  	         31	         31	              3

# saleor.graphql.appbenchmarks app extensions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  app extensions                                                          	         15	         15	              0
  app extensions with filter[filter0]                                     	         14	         14	              0
  app extensions with filter[filter1]                                     	         10	         10	              0
  app extensions with filter[filter2]                                     	         14	         14	              0
  app extensions with filter[filter3]                                     	         10	         10	              0

# saleor.graphql.appbenchmarks apps
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  apps for federation query count                                         	          9	          9	              3
  apps with tokens and webhooks                                           	          9	          9	              0

# saleor.graphql.attributebenchmark attribute
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  attribute translation                                                   	          6	          6	              0
  attribute value translation                                             	         26	         26	              0
  query attribute                                                         	          6	          6	              0
  query attributes                                                        	          8	          8	              0

# saleor.graphql.channelbenchmark channel
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  channels query                                                          	          5	          5	              0

# saleor.graphql.channelmutations channel update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  channel update mutation remove warehouse                                	         38	         38	              6

# saleor.graphql.checkoutbenchmark checkout mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  add billing address to checkout                                         	         68	         68	             10
  add checkout lines                                                      	         67	         67	             10
  add checkout lines with external shipping                               	        168	        168	             67
  add checkout lines with reservations                                    	        142	        142	             51
  add delivery to checkout                                                	         65	         65	              9
  add shipping to checkout                                                	         76	         76	             15
  checkout email update                                                   	         34	         34	              1
  checkout payment charge                                                 	         47	         47	             16
  checkout shipping address update                                        	         70	         70	              8
  checkout voucher code                                                   	         86	         86	             16
  complete checkout                                                       	        176	        176	             37
  complete checkout preorder                                              	        195	        195	             48
  complete checkout with digital line                                     	        236	        236	             63
  complete checkout with out of stock webhook                             	        178	        178	             37
  complete checkout with single line                                      	        178	        178	             37
  create checkout                                                         	         78	         78	             11
  create checkout with reservations                                       	        138	        138	             30
  customer complete checkout                                              	        197	        197	             47
  customer complete checkout for cc                                       	        178	        178	             36
  update checkout lines                                                   	         60	         60	             10
  update checkout lines with reservations                                 	        149	        149	             58

# saleor.graphql.checkoutbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  user checkout details                                                   	         53	         53	              6
  user checkout details with tax app                                      	         46	         46	              3

# saleor.graphql.discountbenchmark sales
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  sales query with channel slug                                           	         19	         19	              0
  sales query withot channel slug                                         	         18	         18	              0

# saleor.graphql.discountbenchmark vouchers
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  vouchers query with channel slug                                        	         19	         19	              0
  vouchers query withot channel slug                                      	         18	         18	              0

# saleor.graphql.giftcardbenchmark gift card mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  create never expiry gift card                                           	         26	         26	              4
  gift card bulk activate by staff                                        	         16	         16	              3
  update gift card                                                        	         36	         36	              4

# saleor.graphql.giftcardbenchmark gift card queries
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  filter gift cards by products                                           	         14	         14	              3
  filter gift cards by tags                                               	         12	         12	              3
  filter gift cards by used by user                                       	         13	         13	              3
  query gift card details                                                 	         14	         14	              3
  query gift cards                                                        	         12	         12	              3

# saleor.graphql.orderbenchmark fulfillment
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  fulfillment query                                                       	          9	          9	              0

# saleor.graphql.orderbenchmark fulfillment refund and return products
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  fulfillment refund products order lines                                 	         54	         54	              2
  fulfillment return products order lines                                 	         98	         98	              9

# saleor.graphql.orderbenchmark order
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  staff multiple draft orders                                             	        730	        730	            580
  staff multiple orders                                                   	        220	        220	            125
  staff order details                                                     	         58	         58	              9
  user order details                                                      	         56	         56	             10

# saleor.graphql.orderbenchmark order fulfill
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  order fulfill                                                           	         17	         17	              3
  order fulfill with gift cards                                           	         17	         17	              3

# saleor.graphql.pagebenchmark page type
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  page types for federation query count                                   	          3	          3	              0
  query page type                                                         	         18	         18	              6
  query page types                                                        	         25	         25	             12

# saleor.graphql.paymentbenchmark payment transactions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  payment transactions                                                    	         49	         49	             20

# saleor.graphql.productbenchmark category
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  categories children                                                     	          3	          3	              0
  categories for federation query count                                   	          3	          3	              0
  category delete                                                         	         83	         83	             15
  category view                                                           	         36	         36	              1

# saleor.graphql.productbenchmark collection
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  collection add products                                                 	         36	         36	              6
  collection bulk delete                                                  	         48	         48	              8
  collection view                                                         	          6	          6	              0
  collections for federation query count                                  	          7	          7	              2
  create collection                                                       	         36	         36	              5
  delete collection                                                       	         40	         40	              7
  remove products from collection                                         	         33	         33	              6
  retrieve collection channel listings                                    	          5	          5	              0

# saleor.graphql.productbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  report product sales                                                    	         10	         10	              3
  retrieve product list                                                   	          4	          4	              0

# saleor.graphql.productbenchmark product
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  filter products by attributes                                           	          9	          9	              0
  filter products by boolean attributes                                   	         19	         19	              0
  filter products by gift card                                            	         11	         11	              1
  filter products by numeric attributes                                   	         18	         18	              0
  product create                                                          	         78	         78	              8
  product details                                                         	         45	         45	              2
  product translations                                                    	          5	          5	              0
  products for federation query count                                     	          6	          6	              2
  products media for federation query count                               	          5	          5	              0
  products types for federation query count                               	          2	          2	              0
  retrieve channel listings                                               	         21	         21	              0
  retrieve product attributes                                             	          9	          9	              0
  retrieve product images                                                 	          4	          4	              0
  retrieve product media                                                  	          4	          4	              0
  retrive products with product types and attributes                      	          7	          7	              0
  update product                                                          	         57	         57	             11

# saleor.graphql.productbenchmark product variant channel listing update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  variant channel listing update                                          	         45	         45	              3

# saleor.graphql.productbenchmark variant
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  product variant bulk create                                             	         68	         68	              3
  product variant create                                                  	         76	         76	              5
  products variants for federation query count                            	          6	          6	              2
  retrieve variant list                                                   	         39	         39	              3
  update product variant                                                  	         76	         76	              9

# saleor.graphql.productbenchmark variant stocks
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  product variants stocks create                                          	         26	         26	              4
  product variants stocks create with single webhook called               	         25	         25	              4
  product variants stocks delete by id                                    	         27	         27	              4
  product variants stocks delete by sku                                   	         27	         27	              4
  product variants stocks delete with out of stock webhook many calls     	         23	         23	              3
  product variants stocks update by sku                                   	         28	         28	              4
  product variants stocks update byid                                     	         28	         28	              4
  query product variants stocks                                           	         10	         10	              0

# saleor.graphql.producttest product sorting attributes
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  sort product not having attribute data                                  	         23	         23	              0

# saleor.graphql.shippingbenchmark shipping methods
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  vouchers query with channel slug                                        	          7	          7	              0
  vouchers query without channel slug                                     	          7	          7	              0

# saleor.graphql.shopbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  retrieve shop                                                           	          4	          4	              0

# saleor.graphql.warehousebenchmark stocks
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  stocks query                                                            	          5	          5	              0

# saleor.graphql.webhookbenchmark webhook events
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  webhooks                                                                	          6	          6	              0

@codecov
Copy link

codecov bot commented May 11, 2023

Codecov Report

Merging #12804 (26351af) into 3.9 (ad7e1c6) will increase coverage by 0.02%.
The diff coverage is 97.16%.

❗ Current head 26351af differs from pull request most recent head 8bbc45f. Consider uploading reports for the commit 8bbc45f to get more accurate results

@@            Coverage Diff             @@
##              3.9   #12804      +/-   ##
==========================================
+ Coverage   93.62%   93.64%   +0.02%     
==========================================
  Files         723      723              
  Lines       53323    53368      +45     
  Branches     6028     6039      +11     
==========================================
+ Hits        49921    49974      +53     
+ Misses       2214     2208       -6     
+ Partials     1188     1186       -2     
Impacted Files Coverage Δ
saleor/graphql/order/mutations/order_fulfill.py 100.00% <ø> (ø)
saleor/graphql/order/types.py 93.44% <ø> (ø)
saleor/graphql/order/utils.py 97.41% <ø> (ø)
saleor/graphql/product/types/products.py 94.07% <ø> (ø)
saleor/product/models.py 94.17% <ø> (ø)
saleor/product/tasks.py 92.50% <ø> (+4.18%) ⬆️
saleor/product/utils/variant_prices.py 98.59% <ø> (+0.34%) ⬆️
saleor/settings.py 77.18% <ø> (ø)
saleor/warehouse/models.py 96.55% <ø> (+0.01%) ⬆️
saleor/core/utils/lazyobjects.py 73.68% <73.68%> (ø)
... and 31 more

... and 1 file with indirect coverage changes

@maarcingebala maarcingebala requested a review from a team May 16, 2023 08:50
@tomaszszymanski129 tomaszszymanski129 merged commit 2af248f into 3.9 May 17, 2023
3 checks passed
@tomaszszymanski129 tomaszszymanski129 deleted the app-resolvers-optimizations-39 branch May 17, 2023 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants