**What**
Allow a customer to complete a requested order edit.
**Test**
- Unit tests complete flow
- Unit tests medusa react
- Integration tests of order edit completion
FIXES CORE-501
**What**
Improve transform query middleware management of the allowed fields and relations in order to improve security upon access data
FIXES CORE-651
**what**
Support confirm of an order edit:
Upon confirmation, the items of the original order are detached and the items from the order edit are attached to the order.
The order total is recomputed with the correct total which can defer from the paid_total and refundable_amount (based on the paid_total)
**Tests**
- Unit tests medusa-js and medusa-react as well as the core
- Integration test of the confirmation flow which check that the order edit is properly confirmed and can be confirmed idempotently. Also validate the totals and that the order items correspond to the order edit items. Also validate the order totals.
FIXES CORE-498
**what**
Support `updateLineItem` which does the following:
- If no item change exist then create a new one and attaches the clone item with the adjustments and tax lines
- if an item change exists then delete/create adjustments and tax lines and update the cloned item quantity
**Tests**
- Unit tests core + client
- integration tests
- When no item change already exists
- When an item change already exists
FIXES CORE-497
**What**
- Improve `retrieveActive` to take into account `(confirmed/canceled/declined)_at`
**Test**
- one more Integration test on that case
FIXES CORE-601
**What**
- Implements the admin create end point
- Service implementation of the create method and the retrieveActive as well as the totals computation
- Improve compute line items
- client
- medusa-js api
- medusa-react mutations hooks
**Tests**
- Unit tests of the create end points
- Unit tests of the service create method
- Integration tests for admin that also take into account totals computations
- client
- medusa-js tests
- medusa-react hooks tests
FIXES CORE-491
**What**
- Implements the admin/store retrieval end point
- Service implementation of the retrieve method
- Service implementation of the computeLineItems method which aggregates the right line item based on the changes that are made
- client
- medusa-js api
- medusa-react queries hooks
**Tests**
- Unit tests of the retrieval end points
- Unit tests of the service retrieve method and computeLineItems
- Integration tests for admin/store
- client
- medusa-js tests
- medusa-react hooks tests
FIXES CORE-492
**What**
Simplify the transaction base service.
**How**
In fact, it does not need to be template and reduce the extensibility as the type is internally enforce. Now, the type is deduced by this which can be any derived class.
* feat(medusa): Migrate the idempotency key service to ts + fix
* feat(medusa): Finalise idempotency migration
* Create late-owls-pump.md
* feat(medusa): Polish
* feat(medusa): Add case to the error handler
* feat(medusa): Add case to the error handler
Co-authored-by: olivermrbl <oliver@mrbltech.com>
**What**
Wrap all actions that require the usage of an atomic phase into a transaction from the handler
**Info**
The following end points have been removed since that they rely on non existing stuff and can't be used and are not used
admin - create-order
admin - delete order metadata
admin - set region metadata
admin - remove region metadata
Fixes CORE-358
* feat(medusa): Migrate and fix order service
* fix(medusa): Order service pass Payment instead of the session:
* fix(medusa): Remove unnecessary method in the client library
* test(medusa): Fix unit tests
* test(medusa): Fix unit tests
* fix(medusa): Typo
* test(meduas): fix unit test
* feat(medusa): Update base service used and missing transaction
* test(meduas): fix unit test
* fix(medusa): cleanup and missing transaction
* fix(medusa): missing withTransaction on some mocks
* feat(medusa): Update order service method visibility
* include feedback
* feat(medusa); revert order payment status"
* test(medusa): fix unit
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
* feat(medusa): Allow to create/update object sales channels assignment
* feat(medusa): cleanup
* feat(medusa): Update oas
* feat(medusa): Only add relation if required
* feat(medusa): Add feature flag decorators
* style(medusa): PR feedback
* feat(medusa): Remove circular by moving sales channel product existence check to the repo layer
* feat(medusa): Reduce selected column as they are not necessary
* feat(medusa): Refactor repository and usage
* feat(medusa): Improve entity name formatting
* feat(medusa): Add feature flag to the service
* fix(medusa): typo
* test(medusa): fix unit tests
* feat(medusa): include feedback
* feat(medusa): Adds validator pipe for Sales Channel existence (#1930)
* feat(medusa): Allow to create/update object sales channels assignment
* feat(medusa): cleanup
* feat(medusa): Update oas
* feat(medusa): Only add relation if required
* feat(medusa): Add feature flag decorators
* style(medusa): PR feedback
* feat(medusa): Remove circular by moving sales channel product existence check to the repo layer
* feat(medusa): Reduce selected column as they are not necessary
* feat(medusa): Refactor repository and usage
* feat(medusa): Improve entity name formatting
* feat(medusa): Add feature flag to the service
* fix(medusa): typo
* test(medusa): fix unit tests
* feat(medusa): Adds validator pipe for Sales Channel existence
* feat: Move product payload classes to types file
* fix unit tests
* fix integration test
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
* feat(medusa): Revert base repository and related
* feat(medusa): cleanup
* remove base repo export
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
**What**
Add support to sales channel in the product/order export strategy
**How**
Update the strategy to include the sales channel if the flag is enabled
**Tests**
Add new unit tests that check that the exported data does include the appropriate sales channel when the flag is enabled and that the data still does not include the sales channel if the flag is not including the flag
FIXES CORE-303
What
Allow to create a cart with a sales channel, otherwise the default one is attached.
Also allow to update the sales channel on an existing cart and in that case the line items that does not belongs to the new sales channel attached are removed
How
Updating existing end points and service method to integrate the new requirements
Tests
Add new integration tests
Fixes CORE-270
Fixes CORE-272
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
**What**
Sometimes the some integration tests that are depending on external services are failing due to timeout.
One of the reason is that the health check is done every 10 sec with a timeout of 5sec, which can lead to long waiting time before continuing
FIXED CORE-326
**What**
Move the preliminary indexing action at boot time to a separate subscriber in order to defer the work load in the background and therefore to avoid increasing the load time when the number of products increase with time.
**Tests**
Add 10k products (since it is our limit, tried with 50k before getting the error limit) using
```sal
do $$
declare
counter integer := 0;
begin
while counter < 10000 loop
INSERT INTO product (id, title, description, handle, profile_id)
(SELECT * FROM ((SELECT random(), random(), random(), random(), 'sp_01FNB9K7FXB0SZMKXD013RJYSP')) as T);
counter := counter + 1;
end loop;
end$$;
```
then start the server and while the server is starting, hit the search end point repeatedly
FIXES CORE-258
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
**What**
Fix the options usage across the plugin `this.options_` instead of `this.options`
**Tests**
New unit tests
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
**What**
Allow to query the products and orders by sales channels
**How**
Updating the existing end points and repositories (if necessary) to take a new query params that is sales_channel_id as an array of string
**Tests**
Add new integration tests
Fixes CORE-295
Fixes CORE-288
What
Support sales channel remove product batch in medusa, medusa-js and medusa-react
How
By implementing a new endpoint and the associated service method as well as the repository methods.
Medusa-js new removeProductd method in the resource
Medusa-react new hook in the mutations
Tests
Endpoint test
Service test
Integration test
Hook tests
Fixes CORE-292
**What**
Support sales channel list in medusa, medusa-js and medusa-react
**How**
By implementing a new endpoint and the associated service method as well as the repository methods.
Medusa-js new list method in the resource
Medusa-react new hook in the queries
**Tests**
Endpoint test
Service test
Integration test
Hook tests
Fixes CORE-280
**What**
Add support for default sales channel
**How**
- Implement a new method in the salesChannelService `createDefault`
- call the new method above in the default loader
**Test**
- Unit tests of the sales channel service method createDefaulta
- Init default loader unit tests
Fixes CORE-316
### What
At the moment it is not possible to pass explicitly null on a property since the qs.stringify will transform it as `url?property=` which is then interpreted on the backend side as `""` value which is not what we expect.
The actual way to pass null value is to set the property as `{ prop: "null" }` in order to get the stringify method to send it correctly.
### How
I just created a small util that loop through the input object and transform all null values to "null" before being passed to the qs.stringify method.
The new util is only applied on the list batch job since this is for now the only place that require that behaviour.
### What
At the moment, it is not possible to not invalidate any queries>
Example, when we want to Create a new signed url, it does not require to invalidate any of the queries.
But the way it is done in the buildOptions, require to give either a key or an array of keys.
### How
The behaviour for empty array is to invalidate all the queries and here we would like to be able to just pass undefined in order to not trigger the invalidation. The update allow the arg to be optional and check for undefined explicitly before choosing the invalidation
* feat(medusa): Support transformQuery middleware
* feat(medusa): Add support for transformBody
* test(medusa): Fix unit tests
* feat(medusa): Cleanup import
* feat(medusa): Update pipe required fields
* feat(medusa): Cleanup
* feat(medusa): Types cleanup
* feat(medusa): Types cleanup
* feat(medusa): Improve global typings and add one more example
* fix(medusa): Wrong wording in the error for prepareListQuery utility
* refactor(medusa): Move some column to a base entity to make it easier to add new models without forgetting some columns
* styles(medusa): Cleanup models
* fix(medusa): typings due to model typings update
* feat(medusa): Cleanup models
* fix(medusa): A model must not return the generateId as part of the entity
* fix(medusa): Plugin integration snapshot
* fix(medusa): Typings from discount-rule-migration scripts
* refactor(medusa): Introduct BaseEntity/SoftDeletableEntity that the entity extends
* styles(medusa): Fix models linting
* test(medusa): Fix integration plugin tests
* feat(medusa): Create generateEntityId standalong function utility and update config to properly supprt ts spec files
* feat(medusa): Update entities to use the new utils to generate and apply the id
* test(medusa): Fix test suits
* feat(medusa): Improve generateEntityId utility
* feat(medusa): Add /admin/products/:id/variants end point
* test(medusa): Fix get-variants test casees
* feat(medusa): Include the config to the ProdutService#retrieveVariants as a method parameter
* feat(medusa): Improve get-variants endpoint
* feat(medusa): Improve get-variants endpoint
* test(medusa): Fix unit tests
* test(medusa): Fix unit tests
* feat(medusa): Improve typings
* feat(medusa): Update according to feedback
* feat(medusa): Update according to feedback
* test(medusa): Fix list-variants tests
* feat(medusa): Getting the variants from the product end point should use the productVariantService
* fix(medusa): list-variants expand possibly undefined
* Fix(medusa): List-variants endpoint
* fix(medusa): Tests suite for list-variant
* test(integration-tests): Fix yarn lock
* test(integration-tests): Fix yarn lock