What:
- Setups the skeleton for pricing module
- Creates service/model/repository for currency model
- Setups types
- Setups DB
- Moved some utils to a common place
RESOLVES CORE-1477
RESOLVES CORE-1476
Looks like during an earlier refactor, some of the categories logic wasn't ported over to the handler that works with q params.
what:
- adds a fix that allows queries to be made on category_id when q param is passed.
Fixes https://github.com/medusajs/medusa/issues/4885
what:
Scopes the errors from the exported workflow to return only invoke errors.
If an error occurs on the invoke level, it'll stop the invoke flow and begin the compensation flow. If another error shows up on the compensate level, it doesn't make sense to throw that error since the user won't be able to do anything about it.
* Feat: create product with product module
* feat: create product wip
* feat: create product wip
* feat: update product relation and generate image migration
* lint
* conitnue implementation
* continue implementation and add integration tests for produceService.create
* Add integration tests for product creation at the module level for the complete flow
* only use persist since write operations are always wrapped in a transaction which will be committed and flushed
* simplify the transaction wrapper to make future changes easier
* feat: move some utils to the utils package to simplify its usage
* tests: fix unit tests
* feat: create variants along side the product
* Add more integration tests an update migrations
* chore: Update actions workflow to include packages integration tests
* small types and utils cleanup
* chore: Add support for database debug option
* chore: Add missing types in package.json from types and util, validate that all the models are sync with medusa
* expose retrieve method
* fix types issues
* fix unit tests and move integration tests workflow with the plugins integration tests
* chore: remove migration function export from the definition to prevent them to be ran by the medusa cli just in case
* fix package.json script
* chore: workflows
* feat: start creating the create product workflow
* feat: add empty step for prices and sales channel
* tests: update scripts and action envs
* fix imports
* feat: Add proper soft deleted support + add product deletion service public api
* chore: update migrations
* chore: update migrations
* chore: update todo
* feat: Add product deletion to the create-product workflow as compensation
* chore: cleanup product utils
* feat: Add support for cascade soft-remove
* feat: refactor repository to take into account withDeleted
* fix integration tests
* Add support for force delete -> delete, cleanup repositories and improvements
* Add support for restoring a product and add integration tests
* cleaup + tests
* types
* fix integration tests
* remove unnecessary comments
* move specific mikro orm usage to the DAL
* Cleanup workflow functions
* Make deleted_at optional at the property level and add url index for the images
* address feedback + cleanup
* fix export
* merge migrations into one
* feat(product, types): added missing product variant methods (#4475)
* chore: added missing product variant methods
* chore: address PR feedback
* chore: catch undefined case for retrieve + specs for variant service
* chore: align TEntity + add changeset
* chore: revert changeset, TEntity to ProductVariant
* chore: write tests for pagination, unskip the test
* Create chilled-mice-deliver.md
* update integration fixtuers
* update pipeline node version
* rename github action
* fix pipeline
* feat(medusa, types): added missing category tests and service methods (#4499)
* chore: added missing category tests and service methods
* chore: added type changes to module service
* chore: address pr feedback
* update repositories manager usage and serialisation from the write public API
* move serializisation to the DAL
* rename template args
* chore: added collection methods for module and collection service (#4505)
* chore: added collection methods for module and collection service
* Create fresh-islands-teach.md
* chore: move retrieve entity to utils package
* chore: make products optional in DTO type
---------
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
* feat(product): Apply transaction decorators to the services (#4512)
* chore: added tags and types methods for product module
* chore: remove console log
* chore: fork managers on every repository call
* chore: add forked manager decorator
* chore: rename to inject manager from inject forked manager
* chore: added product tag and type create/update/delete
* chore: added collection create/update/delete
* chore: fix naming
* update injectManager and related behaviour
* simplify get active manager
* chore: reset package.json
* makes the base repository methods related to manager generic
* makes some wrapper generic enough
* add some todos
* chore: added options CRUD
* clean up
* chore: fix issue with deleted_at not being updated
* wip
* chore: added categories write operations
* chore: remove async nature of injection decorator
* chore: added changeset
* chore: reset package.json
* chore: add manager injection to all contextable methods
* chore: fix unit tests
---------
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
* Feat: create product with product module
* feat: create product wip
* feat: create product wip
* feat: update product relation and generate image migration
* lint
* conitnue implementation
* continue implementation and add integration tests for produceService.create
* Add integration tests for product creation at the module level for the complete flow
* only use persist since write operations are always wrapped in a transaction which will be committed and flushed
* simplify the transaction wrapper to make future changes easier
* feat: move some utils to the utils package to simplify its usage
* tests: fix unit tests
* feat: create variants along side the product
* Add more integration tests an update migrations
* chore: Update actions workflow to include packages integration tests
* small types and utils cleanup
* chore: Add support for database debug option
* chore: Add missing types in package.json from types and util, validate that all the models are sync with medusa
* expose retrieve method
* fix types issues
* fix unit tests and move integration tests workflow with the plugins integration tests
* chore: remove migration function export from the definition to prevent them to be ran by the medusa cli just in case
* fix package.json script
* chore: workflows
* feat: start creating the create product workflow
* feat: add empty step for prices and sales channel
* tests: update scripts and action envs
* fix imports
* feat: Add proper soft deleted support + add product deletion service public api
* chore: update migrations
* chore: update migrations
* chore: update todo
* feat: Add product deletion to the create-product workflow as compensation
* chore: cleanup product utils
* feat: Add support for cascade soft-remove
* feat: refactor repository to take into account withDeleted
* fix integration tests
* Add support for force delete -> delete, cleanup repositories and improvements
* Add support for restoring a product and add integration tests
* cleaup + tests
* types
* fix integration tests
* remove unnecessary comments
* move specific mikro orm usage to the DAL
* Cleanup workflow functions
* Make deleted_at optional at the property level and add url index for the images
* address feedback + cleanup
* fix export
* merge migrations into one
* feat(product, types): added missing product variant methods (#4475)
* chore: added missing product variant methods
* chore: address PR feedback
* chore: catch undefined case for retrieve + specs for variant service
* chore: align TEntity + add changeset
* chore: revert changeset, TEntity to ProductVariant
* chore: write tests for pagination, unskip the test
* Create chilled-mice-deliver.md
* update integration fixtuers
* update pipeline node version
* rename github action
* fix pipeline
* feat(medusa, types): added missing category tests and service methods (#4499)
* chore: added missing category tests and service methods
* chore: added type changes to module service
* chore: address pr feedback
* chore: added product module update
* chore: use status enum type from common types
* chore: remove flushing at repo level, pass in relation instead of ID
* chore: update error message for missing id
* update repositories manager usage and serialisation from the write public API
* move serializisation to the DAL
* rename template args
* chore: address feedback
* chore: wip
* chore: added collection methods for module and collection service (#4505)
* chore: added collection methods for module and collection service
* Create fresh-islands-teach.md
* chore: move retrieve entity to utils package
* chore: make products optional in DTO type
---------
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
* chore: added categories, collections and other relations to update
* feat(product): Apply transaction decorators to the services (#4512)
* chore: handle variant update, create and delete through products update
* chore: cleanup types, self review
* chore: remove relations that are not present in collection
* chore: address reviews p1
* chore: add test for incorrect ID + remove extra check on variant id existance
* chore: cleanup + add changeset
* chore: wip
* chore: add todos for getter method
---------
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
* chore: correct path for migration files
* chore: resolve the path for migrations to be picked up
* chore: fix types on product service interface
* chore: update changeset to reflect type changes
* chore: changed changeset to the correct format
what:
- Introduce a filter to the list endpoint to query by handle
why:
- Storefronts mostly interact through handles and not IDs for readability and seo purposes - Take an example of a url `site.com/category/mens-wear`
RESOLVES CORE-1325
* feat(medusa): add description field to product categories
* chore: set nullable to false
* chore: added UI for description
* chore: added codegen files
What:
- Parent was being updated incorrectly because of a weird typeorm issue, making the rank pick up the wrong entity's rank. This PR fixes that issue by passing in an ID and letting the service take care of fetching the parent.
RESOLVES CORE-1274
What:
- increase tree depth in react nestable
- scope categories on store queries
- allow categories relation in products API
RESOLVES CORE-1238
RESOLVES CORE-1237
RESOLVES CORE-1236
* chore: category list API can return all descendant
* chore: category handle is no longer required via api
* chore: added treescope to sorting
* chore: address feedback on PR
What:
Allowing the list endpoint to return a full tree when requested.
Why:
When scoped with parent_category_id=null and include_descendant_tree=true, the query cost is fairly low. This allows for fast querying and prevent FE from building out the entire tree from a flat list repeatedly. By default, it is set to false, so this should be an intentional change knowing the costs of doing it for the entire result set.
How:
When include_descendants_tree is included in the request parameter or the service parameter, we do a loop on results of product categories and do a call to fetch the descendants of that product category.
RESOLVES CORE-1128
What:
Products can be filtered through the API by category parameters
Why:
To filter products by category
How:
- adds 2 params in admin/store route
- updates repository to accept 2 new parameters
RESOLVES CORE-1032
RESOLVES CORE-1033
**What:**
Introduces a store endpoint to retrieve a list of product categories
**Why:**
This is part of a greater goal of allowing products to be added to multiple categories.
**How:**
- Creates an endpoint in store routes
RESOLVES CORE-968
What:
Introduces a store endpoint to retrieve a product category
Why:
This is part of a greater goal of allowing products to be added to multiple categories.
How:
- Creates an endpoint in store routes
RESOLVES CORE-967
What:
Introduces an admin endpoint that allows a user to update a product category
Why:
This is part of a greater goal of allowing products to be added to multiple categories.
How:
- Creates a route on the admin scope to update category
- Creates a method in product category services to update a category
RESOLVES CORE-956
What:
Introduces an admin endpoint that allows a user to create a product category
Why:
This is part of a greater goal of allowing products to be added to multiple categories.
How:
- Creates a route on the admin scope to create category
- Creates a method in product category services to create a category
RESOLVES CORE-958
**What:**
Introduces an admin endpoint that allows a user to delete a product category, given an ID.
Why:
This is part of a greater goal of allowing products to be added to multiple categories.
How:
- Creates a route on the admin scope to delete category
- Creates a method in product category services to delete a category
RESOLVES CORE-957
* chore: added get route for admin categories API
* chore: add tree method to mock repository
* chore: added changeset to the PR
* chore: rename id to productCategoryId in service
* chore: switch cli option to string
* chore: lint fixes, tests for parent category
* chore: move Nested Categories behind feature flag
* chore: use transformQuery hook in api
* chore: add feature flag in migrations
* chore: remove migration FF, fix FF name
* chore: add free text search + count repo function
* chore: added list endpoint for admin
* chore: added changeset for feature
* chore: address pr review comments
* chore: change oas comment
* chore: add nullable parent category filter + test
**What:**
Introduces a new folder under which repository specs will be placed.
Why:
We don't currently have a good place to test ORM logic or custom queries against the database. The repository folder tests are a place for just exactly that.
How:
Creates an internal package similar to other integration tests - api and plugins.
CORE-965
* chore: tax_rate is added to giftcards
* chore: minor
* chore: update gift card tax calculations to look at giftCard.tax_rate
* chore: gift card transactions use tax rate from gift card for legacy
* fix: gift cart total check for transaction should check the length
* chore: use tax exclusive cost + use giftcard tax rate for gctransactions + refactor
* chore: fix integration test
* chore: address issues brought up in comments
* chore: move gift card creation as a part of order service on order placed
* chore: add type handling for gift card creation
* chore: fix specs
* chore: use taxLines to calculate tax of a gift card
* chore: specs for line items containing gift cards and without
* chore: add integration specs + fix tax rate bug
* chore: round totaling + add GC application specs
* chore: cleanup trialables
* chore: write migration script to backfill gift cards with null tax_rate
* chore: update legacy totals service for gift cards
* chore: add changeset
* chore: address PR review changes
* chore: fix tests based on new totals calc
* chore: address review comments
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
A discount should always be associated to atleast 1 region - we validate it against the region in the cart service.
Adding a request parameter validation to pass in atleast one regionID in an array of regions will ensure that regionID will be validated as a part of the discount service and fail if its not a valid region ID.