Divide fetcher with rest and graphql

This commit is contained in:
goncy
2021-08-25 19:51:15 -03:00
parent d4adfd079f
commit 5d76337f9e
16 changed files with 69 additions and 94 deletions

View File

@@ -9,7 +9,7 @@ import { formatCart } from '../../utils/cart'
const addItem: CartEndpoint['handlers']['addItem'] = async ({
res,
body: { cartId, item },
config: { fetch, cartCookie },
config: { storeRestFetch, cartCookie },
}) => {
// Return an error if no item is present
if (!item) {
@@ -24,7 +24,7 @@ const addItem: CartEndpoint['handlers']['addItem'] = async ({
// Create an order if it doesn't exist
if (!cartId) {
cartId = await fetch('POST', `/orders/Outgoing`, {}).then(
cartId = await storeRestFetch('POST', `/orders/Outgoing`).then(
(response: { ID: string }) => response.ID
)
}
@@ -46,14 +46,14 @@ const addItem: CartEndpoint['handlers']['addItem'] = async ({
// If a variant is present, fetch its specs
if (item.variantId) {
specs = await fetch(
specs = await storeRestFetch(
'GET',
`/me/products/${item.productId}/variants/${item.variantId}`
).then((res: RawVariant) => res.Specs)
}
// Add the item to the order
await fetch('POST', `/orders/Outgoing/${cartId}/lineitems`, {
await storeRestFetch('POST', `/orders/Outgoing/${cartId}/lineitems`, {
ProductID: item.productId,
Quantity: item.quantity,
Specs: specs,
@@ -61,8 +61,8 @@ const addItem: CartEndpoint['handlers']['addItem'] = async ({
// Get cart
const [cart, lineItems] = await Promise.all([
fetch('GET', `/orders/Outgoing/${cartId}`),
fetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
storeRestFetch('GET', `/orders/Outgoing/${cartId}`),
storeRestFetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
(response: { Items: OrdercloudLineItem[] }) => response.Items
),
])

View File

@@ -9,7 +9,7 @@ import { formatCart } from '../../utils/cart'
const getCart: CartEndpoint['handlers']['getCart'] = async ({
res,
body: { cartId },
config: { fetch, cartCookie },
config: { storeRestFetch, cartCookie },
}) => {
if (!cartId) {
return res.status(400).json({
@@ -20,10 +20,10 @@ const getCart: CartEndpoint['handlers']['getCart'] = async ({
try {
// Get cart
const cart = await fetch('GET', `/orders/Outgoing/${cartId}`)
const cart = await storeRestFetch('GET', `/orders/Outgoing/${cartId}`)
// Get line items
const lineItems = await fetch(
const lineItems = await storeRestFetch(
'GET',
`/orders/Outgoing/${cartId}/lineitems`
).then((response: { Items: OrdercloudLineItem[] }) => response.Items)

View File

@@ -6,7 +6,7 @@ import { OrdercloudLineItem } from '../../../types/cart'
const removeItem: CartEndpoint['handlers']['removeItem'] = async ({
res,
body: { cartId, itemId },
config: { fetch },
config: { storeRestFetch },
}) => {
if (!cartId || !itemId) {
return res.status(400).json({
@@ -16,12 +16,15 @@ const removeItem: CartEndpoint['handlers']['removeItem'] = async ({
}
// Remove the item to the order
await fetch('DELETE', `/orders/Outgoing/${cartId}/lineitems/${itemId}`)
await storeRestFetch(
'DELETE',
`/orders/Outgoing/${cartId}/lineitems/${itemId}`
)
// Get cart
const [cart, lineItems] = await Promise.all([
fetch('GET', `/orders/Outgoing/${cartId}`),
fetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
storeRestFetch('GET', `/orders/Outgoing/${cartId}`),
storeRestFetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
(response: { Items: OrdercloudLineItem[] }) => response.Items
),
])

View File

@@ -7,7 +7,7 @@ import { formatCart } from '../../utils/cart'
const updateItem: CartEndpoint['handlers']['updateItem'] = async ({
res,
body: { cartId, itemId, item },
config: { fetch },
config: { storeRestFetch },
}) => {
if (!cartId || !itemId || !item) {
return res.status(400).json({
@@ -21,23 +21,27 @@ const updateItem: CartEndpoint['handlers']['updateItem'] = async ({
// If a variant is present, fetch its specs
if (item.variantId) {
specs = await fetch(
specs = await storeRestFetch(
'GET',
`/me/products/${item.productId}/variants/${item.variantId}`
).then((res: RawVariant) => res.Specs)
}
// Add the item to the order
await fetch('PATCH', `/orders/Outgoing/${cartId}/lineitems/${itemId}`, {
ProductID: item.productId,
Quantity: item.quantity,
Specs: specs,
})
await storeRestFetch(
'PATCH',
`/orders/Outgoing/${cartId}/lineitems/${itemId}`,
{
ProductID: item.productId,
Quantity: item.quantity,
Specs: specs,
}
)
// Get cart
const [cart, lineItems] = await Promise.all([
fetch('GET', `/orders/Outgoing/${cartId}`),
fetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
storeRestFetch('GET', `/orders/Outgoing/${cartId}`),
storeRestFetch('GET', `/orders/Outgoing/${cartId}/lineitems`).then(
(response: { Items: OrdercloudLineItem[] }) => response.Items
),
])