-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Allow external references to be used instead of Saleor-assigned IDs #11410
Conversation
Here is the report for 69aca9d (saleor:add-external-references) 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
# 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 69 69 11
add checkout lines with external shipping 171 171 68
add checkout lines with reservations 146 146 54
add delivery to checkout 68 68 10
add shipping to checkout 78 78 15
checkout email update 35 35 1
checkout payment charge 47 47 16
checkout shipping address update 72 72 9
checkout voucher code 86 86 16
complete checkout 180 180 37
complete checkout preorder 199 199 48
complete checkout with digital line 240 240 63
complete checkout with out of stock webhook 182 182 37
complete checkout with single line 182 182 37
create checkout 80 80 11
create checkout with reservations 143 143 30
customer complete checkout 201 201 47
customer complete checkout for cc 182 182 36
update checkout lines 62 62 11
update checkout lines with reservations 153 153 61
# saleor.graphql.checkoutbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
user checkout details 53 53 6
user checkout details with tax app 47 47 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 720 720 570
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 82 82 17
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 73 73 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 51 51 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 9 9 0
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, but how we want to update the externalReference
? As far as I see, we don't have any fields to save the externalReference
. Shouldn't we have such possibility in case of create
& update
objects?
Codecov Report
@@ Coverage Diff @@
## main #11410 +/- ##
==========================================
- Coverage 93.61% 93.59% -0.03%
==========================================
Files 721 722 +1
Lines 53132 53303 +171
Branches 5990 6012 +22
==========================================
+ Hits 49738 49887 +149
- Misses 2208 2230 +22
Partials 1186 1186
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@zedzior @timuric
What about order-create-from-checkout
and checkout-complete
mutations? Do we want to also have the possibility to assign external references there?
Personally, I would say, that it would be worth to extend order-create-from-checkout
mutation as this mutation is called by app. The app can already have the reference recieved from external system.
@korycins Do you mean allowing to pass external reference for a future order from the checkout flow? Make sense to me. Also, @timuric what do you think about renaming the field to |
@korycins do you have any use case in mind for having external keys in checkout? |
@timuric It's more about external reference of orders, not checkouts. As I understand it, if you knew your external order ID upfront and passed it to Saleor during checkout, it would be assigned to the newly created order. |
@timuric I just thought that you could already have an |
@korycins We discussed with Timur that for now we are good with the mutations that this PR adds and we can extend it later, if there is a clear use-case for that. |
… and delete by external_reference; cover changes with tests Handle ProductVariant Handle Order Handle Attribute Handle Warehouse query only Refactor resolvers Handle Account Code rafctor, fix tests Allow updating external_reference field; rename ext_ref in resolvers;
5edb2ba
to
1078864
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@zedzior external_reference
is set as a unique in the abstract model. Can you confirm that we also handle the case when external_reference
is already attached to different object? Maybe I am missing something, but I think that we will raise unhandled exception: IntegrityError
@korycins |
e6b7593
to
69aca9d
Compare
#10820
I want to merge this change because I want to select, update and delete records by external IDs. The new filed is called
external_reference
and will be applied to following models:a. Orders
b. Products
c. Product Variants
d. Attributes
e. Attribute Values
f. Warehouses (only for the purpose of Stock update)
g. Customers
Impact
Pull Request Checklist