Feat: Medusa react price list (#1258)

* export everything from price lists in core

* medusa-js price list

* feat: add product list for price lists

* feat: add product list for price lists

* add price list to admin module

* add price list hooks initial

* refactor: product list controller

* fix: add integration test for price list products

* update types

* add tests for price lists

* update medusa react tests

* update update request for price lists

* Apply suggestions from code review

Co-authored-by: Sebastian Rindom <skrindom@gmail.com>

* rename methods

* pr feedback

* list products from price list

* fix errors after merge

* update medusa react with medusa-js method name changes

* redo changes

* update hook names

* fix: routes in msw handler

Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
Co-authored-by: Zakaria El Asri <zakaria.elas@gmail.com>
This commit is contained in:
Philip Korsholm
2022-04-03 20:48:49 +02:00
committed by GitHub
co-authored by Sebastian Rindom Zakaria El Asri
parent fb33dbaca3
commit b164977a19
24 changed files with 838 additions and 276 deletions
@@ -24,6 +24,7 @@ import AdminRegionsResource from "./regions"
import AdminNotificationsResource from "./notifications"
import AdminUploadsResource from "./uploads"
import AdminProductTagsResource from "./product-tags"
import AdminPriceListResource from "./price-lists"
class Admin extends BaseResource {
public auth = new AdminAuthResource(this.client)
@@ -35,6 +36,7 @@ class Admin extends BaseResource {
public giftCards = new AdminGiftCardsResource(this.client)
public invites = new AdminInvitesResource(this.client)
public notes = new AdminNotesResource(this.client)
public priceLists = new AdminPriceListResource(this.client)
public products = new AdminProductsResource(this.client)
public productTags = new AdminProductTagsResource(this.client)
public productTypes = new AdminProductTypesResource(this.client)
@@ -0,0 +1,99 @@
import {
AdminPostPriceListPricesPricesReq,
AdminPostPriceListsPriceListPriceListReq,
AdminPostPriceListsPriceListReq,
AdminPriceListDeleteRes,
AdminPriceListRes,
AdminGetPriceListPaginationParams,
AdminPriceListsListRes,
AdminDeletePriceListPricesPricesReq,
AdminPriceListDeleteBatchRes,
AdminGetPriceListsPriceListProductsParams,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
class AdminPriceListResource extends BaseResource {
create(
payload: AdminPostPriceListsPriceListReq,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListRes> {
const path = `/admin/price-lists`
return this.client.request("POST", path, payload, {}, customHeaders)
}
update(
id: string,
payload: AdminPostPriceListsPriceListPriceListReq,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListRes> {
const path = `/admin/price-lists/${id}`
return this.client.request("POST", path, payload, {}, customHeaders)
}
delete(
id: string,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListDeleteRes> {
const path = `/admin/price-lists/${id}`
return this.client.request("DELETE", path, {}, {}, customHeaders)
}
retrieve(
id: string,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListRes> {
const path = `/admin/price-lists/${id}`
return this.client.request("GET", path, {}, {}, customHeaders)
}
list(
query?: AdminGetPriceListPaginationParams,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListsListRes> {
let path = `/admin/price-lists/`
if (query) {
const queryString = qs.stringify(query)
path = `/admin/price-lists?${queryString}`
}
return this.client.request("GET", path, {}, {}, customHeaders)
}
listProducts(
id: string,
query?: AdminGetPriceListsPriceListProductsParams,
customHeaders: Record<string, any> = {}
): ResponsePromise<any> {
let path = `/admin/price-lists/${id}/products`
if (query) {
const queryString = qs.stringify(query)
path = `/admin/price-lists/${id}/products?${queryString}`
}
return this.client.request("GET", path, {}, {}, customHeaders)
}
addPrices(
id: string,
payload: AdminPostPriceListPricesPricesReq,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListRes> {
const path = `/admin/price-lists/${id}/prices/batch`
return this.client.request("POST", path, payload, {}, customHeaders)
}
deletePrices(
id: string,
payload: AdminDeletePriceListPricesPricesReq,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminPriceListDeleteBatchRes> {
const path = `/admin/price-lists/${id}/prices/batch`
return this.client.request("DELETE", path, payload, {}, customHeaders)
}
}
export default AdminPriceListResource