Zum Hauptinhalt springen

Interface: ProductsUpdateSupplier

This is the caller side of the contract.

Remarks

  1. The processUpdateRequest method converts the raw http request into an PatchProductsRequest
  2. The PatchProductsRequest is processed by the other system which returns the ProductDto for the patched product
  3. The provideUpdatedProduct method converts the ProductDto to a response that is suitable for the requesting system.

Methods

processProductsUpdateRequest

processProductsUpdateRequest(request): Promise<{ fields?: [{ field?: string; operation?: PatchOperation.Remove; } | { field?: string ; operation?: Append ; value?: unknown } | { field?: string ; operation?: Set ; value?: unknown }, ...(({ field?: string; operation?: PatchOperation.Remove; }) | Object | Object)[]] ; filters?: [{ field?: string ; operation?: FilterOperation ; value?: unknown }, ...Object[]] }>

Handle the incoming request and transform it to a QueryProductsRequest.

Parameters

NameTypeDescription
requestObjectThe raw http request to process.
request.body?string-
request.headers?Record<string, string>-
request.method?string-
request.url?string-

Returns

Promise<{ fields?: [{ field?: string; operation?: PatchOperation.Remove; } | { field?: string ; operation?: Append ; value?: unknown } | { field?: string ; operation?: Set ; value?: unknown }, ...(({ field?: string; operation?: PatchOperation.Remove; }) | Object | Object)[]] ; filters?: [{ field?: string ; operation?: FilterOperation ; value?: unknown }, ...Object[]] }>

The PatchProductsRequest

Example

Raw http request:

POST /product_id=1234
Content-Type: application/json

{
"name": "test",
"meta": {
"description": "A nice product"
}
}

PatchProductsRequest:

{
filters: [
{field: 'id', operation: FilterOperation.Equal, value: enforce<ProductDto["id"]>('1234')}
],
fields: [
{field: 'name', operation: PatchOperation.Set, value: enforce<ProductDto["name"]>('test')},
{field: 'description', operation: PatchOperation.Set, value: enforce<ProductDto["description"]>('A nice product')},
],
}

Defined in

src/contracts/patch-products/handler/products-update-supplier.ts:48


provideUpdatedProducts

provideUpdatedProducts(products): Promise<{ body?: string ; headers?: Record<string, string> ; statusCode?: number }>

Convert the updated products to valid http response.

Parameters

NameTypeDescription
products{ attributeValues?: Record<string, unknown> = ZAttributeValues; availability?: { amount?: number; stockId?: string; stockName?: string; attributeValues?: Record<string, unknown>; }[] ; description?: string ; details?: Record<string, string> ; grossPrice?: { value?: number; divisor?: number; currencyCode?: string; } ; gtin?: string ; id?: string ; images?: { url?: string; isDefault?: boolean; attributeValues?: Record<string, unknown>; }[] ; manufacturer?: string ; name?: string ; netPrice?: { value?: number; divisor?: number; currencyCode?: string; } ; sku?: string ; taxRate?: number ; variationParentId?: string ; weightInGrams?: number }[]The updated products.

Returns

Promise<{ body?: string ; headers?: Record<string, string> ; statusCode?: number }>

Defined in

src/contracts/patch-products/handler/products-update-supplier.ts:55