Commit Graph

300 Commits

Author SHA1 Message Date
Shahed Nasser
8bc902fb0f chore(oas): update order OAS schema to include new fields (#5436) 2023-10-20 18:34:26 +03:00
pepijn-vanvlaanderen
0d7c5543dd feat(medusa): Add item and shipping tax totals to order (#5385)
* Expose item tax total and shipping tax total in order totals

* Added changeset

* Fixes to tests

* Fixes to integration tests

* Fixes to integration tests

* Fixes to integration tests

* Change changeset to patch
2023-10-19 09:57:37 +02:00
Adrien de Peretti
69cf7215f1 fix(medusa, types): Mark properties as nullable to reflect their correct types (#5281)
* fix(medusa, types): Mark properties as nullable to reflect their correct types

* Create chilly-pugs-doubt.md

* fix column type to prevent inference

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
2023-10-15 18:10:36 +02:00
Shahed Nasser
c02fdeb789 chore(oas): fix typo in product variant's OAS (#5352)
* chore(oas): fix typo in product variant's OAS

* fix oas error
2023-10-12 14:20:08 +03:00
Adrien de Peretti
240c439beb fix(medusa): Product model before insert hook (#5200)
**What**
When the id is provided, the rest of the hook should still apply. At the moment, when the id is provided the hook is skipped
2023-09-26 09:48:26 +00:00
Philip Korsholm
5d10c46bb1 feat(medusa): Separate money amount and variant (#4906)
* initial changes

* working test

* final changes to product tests

* update integration tests

* update price list integration tests

* update integration tests

* update unit tests

* update plugin integration tests

* remove catch from integration test

* undo change

* add andWhere

* update upsertCurrencyMoneyAmount method

* undo line item changes

* undo changes

* update deprecated method

* Update packages/medusa/src/migrations/1692953518123-drop_money_amount_constraints_for_pricing_module.ts

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>

* rename joinTable

* update with joinTable entity

* update load methods

* remove await create

* re-add context test

* update price list behavior for prices

* update price list snapshots

* re-add admin seeder

* pr feedback

* fix unit tests

* fix plugin integration tests

* initial review changes

* redo changes to variant creation

---------

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-09-13 13:26:20 +02:00
Adrien de Peretti
30863fee52 feat(medusa): List products with Remote Query (#4969)
**What**
- includes some type fixes in the DAL layer
- List products including their prices and filtered by the sales channel as well as q parameter and category scope and all other filters
- Assign shipping profile
- ordering
- Add missing columns in the product module
- update product module migrations

**Comment**
-  In regards to the fields, we can pass whatever we want the module will only return the one that exists (default behavior), but on the other hand, that is not possible for the relations.

**question**
- To simplify usage, should we expose the fields/relations available from the module to simplify building a query for the user and be aware of what the module provides

**todo**
- Add back the support for the user to ask for fields/relations
2023-09-12 15:55:05 +00:00
Carlos R. L. Rodrigues
4b0e3fb2a7 feat(medusa,orchestration): Decouple Product in Cart domain (#4945) 2023-09-08 17:24:46 +02:00
Andreas Deininger
a0bbc1893b chore: fix typos (#4877)
* Chore: Fix typos

* Add generated resources

---------

Co-authored-by: Shahed Nasser <shahednasser@gmail.com>
2023-08-30 13:27:46 +03:00
Rares Stefan
470379e631 fix(medusa, admin-ui): Add deleted_at to Return Reason unique constraint (#4834)
* Update return reason create to upsert

* Create strange-wombats-invite.md

* Revert upsert, make value index only apply on non-deleted entities
2023-08-29 19:26:58 +02:00
Shahed Nasser
75f2f9ad62 chore(oas): fix tag names (#4622) 2023-07-28 10:41:47 +03:00
Shahed Nasser
8d0ce0af06 chore(oas): add link for additional info on metadata (#4613) 2023-07-27 12:44:16 +03:00
Shahed Nasser
8a1aac028e chore(oas): improvements to examples and descriptions (#4545)
* improve curl examples in OAS

* update tags

* fix oas errors

* update tags and their descriptions

* updated oas of endpoints

* improved oas of all admin endpoints

* improved store OAS comments

* improved models OAS comments

* small change
2023-07-26 20:13:44 +03:00
Adrien de Peretti
ae33f4825f fix(medusa): Removing the line items should remove the tax lines as well (#4595)
Fixes https://github.com/medusajs/medusa/issues/4531
2023-07-25 08:41:01 +00:00
Adrien de Peretti
d2a8cf0378 feat(medusa): Continue create product workflow changes (#4473) 2023-07-24 13:30:24 +02:00
Adrien de Peretti
9dcdc0041a fix(medusa, utils): fix the way selects are consumed alongside the relations (#4389)
**What**
There is actually an issue with using the `fields` query params with the way the repositories are using our custom query strategy. This pr aims to fix this issue by reworking the strategy.

What we had to do was to rework the way the selects are built for each subquery in order to follow the aliasing convention and to be taken into consideration. Alongside these changes, the join used to always select everything, this needed to be changed so that if there are any selects provided for a join, the join should not select everything and let the query select the fields that are requested.

Another notable change is that all the repositories are now using the repository util in order to centralize the customization and to have a single place to update when this kind of issue arises. This means that the eager relations when using the query builder are not necessarily taken into account. For that reason, I have removed the `shipping_option` eager option in favor of explicitly asking for the relations like we started to do it in some places.

FIXES CORE-1413
2023-06-29 13:26:41 +00:00
Adrien de Peretti
ed382f2ee5 feat(medusa): Improve prices flow (#3703) 2023-05-18 08:55:28 +02:00
Oliver Windall Juhl
a91987fab3 feat(medusa): Remove sqlite support (#4026) 2023-05-17 12:13:36 +02:00
Oliver Windall Juhl
a666462333 feat(medusa): Cart custom query strategy (#4083) 2023-05-12 14:06:55 +02:00
Shahed Nasser
a8887cd02f docs: added idempotency key documentation (#4039) 2023-05-08 19:21:07 +03:00
Oliver Windall Juhl
b7a7826394 feat(medusa): Use query relation load strategy on Carts (#3984) 2023-05-02 21:10:44 +02:00
Oliver Windall Juhl
3b3236cc01 fix(medusa): Reduce joins in cart retrieval (#3909)
* fix(medusa): Remove discounts.regions relation from cart retrieval

* Create violet-poets-rule.md

* fix service test

* update snapshot

---------

Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
2023-04-25 12:51:33 +02:00
Philip Korsholm
4a85627435 feat(medusa, medusa-plugin-brightpearl): Inventory management for Brightpearl (#3192) 2023-04-23 12:50:19 +02:00
Philip Korsholm
2be144ff05 feat(medusa): Add purchasable prop on variants when setting availability (#3811)
* write integration tests

* update variant inventory decorator

* update types

* add changeset

* feedback comments

* add yaml schemas

* different oas approach

* pr feedback

* update oas

---------

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-04-20 08:54:26 +02:00
Shahed Nasser
f132535056 docs: added cart conceptual guide (#3872)
* docs: added cart conceptual guide

* changed link of idempotency key

* apply suggestions from code review

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>

* tiny change

* Used correct entity name representation

* small fixes in totals section

---------

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-04-19 16:02:37 +03:00
Riqwan Thamir
d533caa4c2 feat(medusa, admin-ui): add description field to product categories (#3768)
* feat(medusa): add description field to product categories

* chore: set nullable to false

* chore: added UI for description

* chore: added codegen files
2023-04-08 18:29:12 +02:00
Oliver Windall Juhl
809ab2e0eb chore: Merge master to develop (#3653) 2023-03-31 13:09:57 +02:00
Riqwan Thamir
5f41cd9a67 feat(medusa): Categories - Adds indexes + remove soft delete (#3589)
* chore: added indexes for category properties

* chore: added changset

* chore: test changeset pre

* chore: undo pre release

* chore: remove soft delete from categories (#3590)

* chore: remove soft delete from categories

* chore: remove delete indexes and columns

* chore: drop safely + changeset

* chore: fix slipped deleted_at

* chore: removes extra changeset

* chore: redraw indexes

* chore: redraw indexes

* chore: drop records before dropping column for delete

---------

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-03-28 12:43:15 +02:00
Oliver Windall Juhl
ef5ef9f5a2 feat(medusa,event-bus-local,event-bus-redis): Event Bus modules (#2599) 2023-03-22 10:26:21 +01:00
Patrick
4042beb102 feat(oas): add @schema OAS for address request payloads (#3423)
## What

Replace AddressFields with actual AddressPayload schema based off the actual type used by the controllers.

## Why

AddressPayload is currently being referenced in client code. Our OAS schema should attempt to match current client usage in order to reduce friction when migrating to a OAS generated types package.

## How

* Represent AddressPayload and AddressCreatePayload in our OAS schemas.
* Replace reference to AddressFields
* Plus, fix typo in /admin/orders/ route
2023-03-09 14:31:40 +00:00
Riqwan Thamir
0a6aa0e624 feat(medusa): categories can be ranked based on position (#3341)
* chore: categories can be ranked based on position

* chore: fix tests

* chore: sort categories by order

* chore: fix bug where mpath relationship is messed up

* chore: enable linting - lint changes

* Update packages/medusa/src/repositories/product-category.ts

Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>

* chore: fixed specs

* chore: cleanup repository to new typeorm interfaces + cleanup

* chore: revert repository changes due to incorrect sql

* chore: addressed pr reviews

---------

Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
2023-03-06 15:49:16 +01:00
olivermrbl
e1b92e9b04 fix: Merge conflicts with master 2023-02-22 17:38:49 +01:00
Adrien de Peretti
d11ab924b8 feat(medusa): Configurable returnable_items on order decorate totals (#3276) 2023-02-21 14:48:49 +01:00
Frane Polić
6c04624727 chore(medusa): remove PublishableAPIKeys feature flag (#3087) 2023-02-20 21:16:08 +01:00
Oliver Windall Juhl
f88af0c28d fix(medusa): Received quantity on return lines (#3267) 2023-02-17 10:13:50 +00:00
Riqwan Thamir
121b42acfe chore(medusa): Typeorm upgrade to 0.3.11 (#3041) 2023-02-15 16:25:30 +01:00
Patrick
cac13a88da feat(oas) - accurate model OAS representation - R to U (#3250)
### Scope

Models R to U

### What

Refactor OAS for models to accurately represent their shape in API responses.

### Why

About 33% of model fields are not accurately represented in the OAS. Most of the issues are:
- fields that can not be omitted in the response are not declared as `required`
- fields that could return `null` as their value are not declared as `nullable: true`

When using a code generator, these OAS issues would lead to inaccurate response shapes in the generated client.

### How

#### nullable
Fields meeting at least one of the following condition will be represented as `nullable: true` in OAS:
* The field is decorated with `@Column({ nullable: true })`
* The field is decorated with `@OneToOne`, `@ManyToOne`
* The field is decorated with `@DeleteDateColumn`

#### optional
Fields meeting at least one of the following conditions will never be listed as `required` in OAS and will be considered optional and could be omitted in the response:
* The field is decorated with `@OneToOne`, `@ManyToOne`, `@OneToMany`, `@ManyToMany`
* The field is decorated with `@FeatureFlagColumn`
* The field is decorated with `@Column({select: false})`
* The field is representing dynamic values not persisted in the database

Fields not meeting any of the conditions above will be declared as `required` and are expected to be present in the response.

### Test
* Ran OAS validator.
* Ran docs build script.

Expect OAS changes to be reflected in the API documentation.
2023-02-13 16:59:36 +00:00
Patrick
a59bd84e41 feat(oas) - accurate model OAS representation - PA to PU (#3223)
### Scope

Models PA to PU

### What

Refactor OAS for models to accurately represent their shape in API responses.

### Why

About 33% of model fields are not accurately represented in the OAS. Most of the issues are:
- fields that can not be omitted in the response are not declared as `required`
- fields that could return `null` as their value are not declared as `nullable: true`

When using a code generator, these OAS issues would lead to inaccurate response shapes in the generated client.

### How

#### nullable
Fields meeting at least one of the following condition will be represented as `nullable: true` in OAS:
* The field is decorated with `@Column({ nullable: true })`
* The field is decorated with `@OneToOne`, `@ManyToOne`
* The field is decorated with `@DeleteDateColumn`

#### optional
Fields meeting at least one of the following conditions will never be listed as `required` in OAS and will be considered optional and could be omitted in the response:
* The field is decorated with `@OneToOne`, `@ManyToOne`, `@OneToMany`, `@ManyToMany`
* The field is decorated with `@FeatureFlagColumn`
* The field is decorated with `@Column({select: false})`
* The field is representing dynamic values not persisted in the database

Fields not meeting any of the conditions above will be declared as `required` and are expected to be present in the response.

### Test
* Ran OAS validator.
* Ran docs build script.

Expect OAS changes to be reflected in the API documentation.
2023-02-10 15:35:24 +00:00
Patrick
507ad00bec feat(oas) - accurate model OAS representation - F to O (#3210)
### Scope

Models F to O

### What

Refactor OAS for models to accurately represent their shape in API responses.

### Why

About 33% of model fields are not accurately represented in the OAS. Most of the issues are:
- fields that can not be omitted in the response are not declared as `required`
- fields that could return `null` as their value are not declared as `nullable: true`

When using a code generator, these OAS issues would lead to inaccurate response shapes in the generated client.

### How

#### nullable
Fields meeting at least one of the following condition will be represented as `nullable: true` in OAS:
* The field is decorated with `@Column({ nullable: true })`
* The field is decorated with `@OneToOne`, `@ManyToOne`
* The field is decorated with `@DeleteDateColumn`

#### optional
Fields meeting at least one of the following conditions will never be listed as `required` in OAS and will be considered optional and could be omitted in the response:
* The field is decorated with `@OneToOne`, `@ManyToOne`, `@OneToMany`, `@ManyToMany`
* The field is decorated with `@FeatureFlagColumn`
* The field is decorated with `@Column({select: false})`
* The field is representing dynamic values not persisted in the database

Fields not meeting any of the conditions above will be declared as `required` and are expected to be present in the response.

### Test
* Ran OAS validator.
* Ran docs build script.

Expect OAS changes to be reflected in the API documentation.
2023-02-09 15:03:11 +00:00
Carlos R. L. Rodrigues
d859ccf551 Feat(medusa) - delete cascade modules associations (#3190)
* delete cascade sales channel x locations, variant x inventory item
2023-02-08 17:23:47 -03:00
Patrick
4d3210bfbb feat(oas) - accurate model OAS representation - A to D (#3203)
### Scope

Models A to D

### What

Refactor OAS for models to accurately represent their shape in API responses.

### Why

About 33% of model fields are not accurately represented in the OAS. Most of the issues are:
- fields that can not be omitted in the response are not declared as `required`
- fields that could return `null` as their value are not declared as `nullable: true`

When using a code generator, these OAS issues would lead to inaccurate response shapes in the generated client.

### How

#### nullable
Fields meeting at least one of the following condition will be represented as `nullable: true` in OAS:
* The field is decorated with `@Column({ nullable: true })`
* The field is decorated with `@OneToOne`, `@ManyToOne`
* The field is decorated with `@DeleteDateColumn`

#### optional
Fields meeting at least one of the following conditions will never be listed as `required` in OAS and will be considered optional and could be omitted in the response:
* The field is decorated with `@OneToOne`, `@ManyToOne`, `@OneToMany`, `@ManyToMany`
* The field is decorated with `@FeatureFlagColumn`
* The field is decorated with `@Column({select: false})`
* The field is representing dynamic values not persisted in the database

Fields not meeting any of the conditions above will be declared as `required` and are expected to be present in the response.

### Test
* Ran OAS validator.
* Ran docs build script.

Expect OAS changes to be reflected in the API documentation.
2023-02-08 17:00:37 +00:00
Riqwan Thamir
4f0d8992a0 feat(medusa): Products can be added to categories in batch request (#3123)
* wip

* chore: fix issues with join table

* chore: fix issues

* chore: fix ordering issue on random failing test

* chore: revert table name

* chore: added oas for category

* chore: update categories for a product

* chore: add remove category test

* chore: added changeset

* chore: address review comments

* chore: Products can be added to categories in batch request

* chore: address review comments + add unit specs

* chore: make template optional
2023-01-27 15:58:58 +01:00
Riqwan Thamir
ee42b60a20 feat(medusa): add or remove categories from products (#3114)
* wip

* chore: fix issues with join table

* chore: fix issues

* chore: fix ordering issue on random failing test

* chore: revert table name

* chore: added oas for category

* chore: update categories for a product

* chore: add remove category test

* chore: added changeset

* chore: address review comments

* Apply suggestions from code review

Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>

Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
2023-01-27 15:25:46 +01:00
Riqwan Thamir
2e7e16b917 feat(medusa): Added models + repo for products in multiple categories (#3083)
* chore: Added models + repo for products in multiple categories

* chore: remove join table model + repo

* chore: add foreign key constraints

* Update packages/medusa/src/migrations/1674455083104-product_category_product.ts

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>

* chore: cascade on delete

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-01-25 07:24:39 +01:00
Patrick
cb1ec0076b chore(oas): replace response with $ref class JSDoc (Store PRO-V) (#3044)
### Scope

Store routes directories PRO to V.

### What

Move inline OAS response schema declaration under their respective class declarations in order to expose them through  `#/components/schemas`. Replace inline OAS response schema with a `$ref` reference pointing to the newly declared schema.

### Why

Having response declared as its own "named" schema will allow OAS code generators to output typed entities/DTO that can be consumed without having to reference the route/operation.

### How

Declare a new @schema JSDoc for each "Res" class used to parse and validate request body. Move the current inline requestBody to the new @schema.

### Test

- Ran OAS validator.
- Ran docs build script.

Expect no visible changes to the documentation.
2023-01-17 14:22:10 +00:00
Riqwan Thamir
7d4b8b9cc5 feat(medusa): List (service + controller) product categories #3004 (#3023)
**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
2023-01-16 19:20:42 +00:00
Oliver Windall Juhl
9e3beaf531 chore(feature-flags): Remove OrderEditing feature flag (#3006) 2023-01-13 11:10:09 +00:00
Shahed Nasser
5d769ccad2 chore(oas): fixed oas for product category endpoints and model (#3014) 2023-01-12 21:35:13 +02:00
Oliver Windall Juhl
b80124d32d feat(medusa): Allow custom created_by on order edits (#3007) 2023-01-12 15:47:18 +01:00
Philip Korsholm
1dc79590b3 fix(medusa): Rename quantity to required quantity (#2963) 2023-01-11 19:21:05 +01:00