Feat: Client admin products (#930)

* add exports in product

* add product resource

* fix failling tests

* import reflect metadata

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
Philip Korsholm
2021-12-17 12:30:04 +01:00
committed by GitHub
co-authored by Oliver Windall Juhl
parent 59e268b919
commit e0be2da15e
8 changed files with 172 additions and 15 deletions
@@ -7,6 +7,7 @@ import AdminDraftOrdersResource from "./draft-orders"
import AdminGiftCardsResource from "./gift-cards"
import AdminInvitesResource from "./invites"
import AdminNotesResource from "./notes"
import AdminProductsResource from "./products"
import AdminUsersResource from "./users"
import AdminReturnsResource from "./returns"
import AdminOrdersResource from "./orders"
@@ -27,6 +28,7 @@ class Admin extends BaseResource {
public giftCards = new AdminGiftCardsResource(this.client)
public invites = new AdminInvitesResource(this.client)
public notes = new AdminNotesResource(this.client)
public products = new AdminProductsResource(this.client)
public users = new AdminUsersResource(this.client)
public returns = new AdminReturnsResource(this.client)
public orders = new AdminOrdersResource(this.client)
@@ -0,0 +1,133 @@
import {
AdminGetNotesParams,
AdminNotesDeleteRes,
AdminNotesListRes,
AdminNotesRes,
AdminPostNotesNoteReq,
AdminPostNotesReq,
AdminPostProductsProductReq,
AdminPostProductsReq,
AdminProductsListTypesRes,
AdminProductsListTagsRes,
AdminProductsRes,
AdminPostProductsProductVariantsReq,
AdminPostProductsProductVariantsVariantReq,
AdminPostProductsProductOptionsReq,
AdminPostProductsProductOptionsOption,
AdminProductsDeleteVariantRes,
AdminProductsDeleteRes,
AdminProductsDeleteOptionRes,
AdminPostProductsProductMetadataReq,
AdminGetProductsParams,
AdminProductsListRes,
} from "@medusajs/medusa"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
class AdminProductsResource extends BaseResource {
create(payload: AdminPostProductsReq): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/`
return this.client.request("POST", path, payload)
}
retrieve(id: string): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}`
return this.client.request("GET", path)
}
update(
id: string,
payload: AdminPostProductsProductReq
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}`
return this.client.request("POST", path, payload)
}
delete(id: string): ResponsePromise<AdminProductsDeleteRes> {
const path = `/admin/products/${id}`
return this.client.request("DELETE", path)
}
list(query: AdminGetProductsParams): ResponsePromise<AdminProductsListRes> {
let path = `/admin/products`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/products?${queryString.join("&")}`
}
return this.client.request("GET", path)
}
listTypes(): ResponsePromise<AdminProductsListTypesRes> {
const path = `/admin/products/types`
return this.client.request("GET", path)
}
listTags(): ResponsePromise<AdminProductsListTagsRes> {
const path = `/admin/products/tag-usage`
return this.client.request("GET", path)
}
setMetadata(
id: string,
payload: AdminPostProductsProductMetadataReq
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}/metadata`
return this.client.request("POST", path, payload)
}
createVariant(
id: string,
payload: AdminPostProductsProductVariantsReq
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}/variants`
return this.client.request("POST", path, payload)
}
updateVariant(
id: string,
variantId: string,
payload: AdminPostProductsProductVariantsVariantReq
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}/variants/${variantId}`
return this.client.request("POST", path, payload)
}
deleteVariant(
id: string,
variantId: string
): ResponsePromise<AdminProductsDeleteVariantRes> {
const path = `/admin/products/${id}/variants/${variantId}`
return this.client.request("DELETE", path)
}
addOption(
id: string,
payload: AdminPostProductsProductOptionsReq
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}/options`
return this.client.request("POST", path, payload)
}
updateOption(
id: string,
optionId: string,
payload: AdminPostProductsProductOptionsOption
): ResponsePromise<AdminProductsRes> {
const path = `/admin/products/${id}/options/${optionId}`
return this.client.request("POST", path, payload)
}
deleteOption(
id: string,
optionId: string
): ResponsePromise<AdminProductsDeleteOptionRes> {
const path = `/admin/products/${id}/options/${optionId}`
return this.client.request("DELETE", path)
}
}
export default AdminProductsResource