Skip to content

Commit 1658974

Browse files
committed
feat(orders): add Medusa order service and exports
1 parent 7496842 commit 1658974

2 files changed

Lines changed: 82 additions & 1 deletion

File tree

libs/storefront-data/src/orders/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
export { createOrderHooks } from "./hooks"
2+
export type {
3+
MedusaOrderDetailInput,
4+
MedusaOrderListInput,
5+
MedusaOrderServiceConfig,
6+
} from "./medusa-service"
7+
export { createMedusaOrderService } from "./medusa-service"
28
export { createOrderQueryKeys } from "./query-keys"
39
export type {
4-
OrderListInputBase,
510
OrderDetailInputBase,
11+
OrderListInputBase,
612
OrderListResponse,
713
OrderQueryKeys,
814
OrderService,
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import type Medusa from "@medusajs/js-sdk"
2+
import type { HttpTypes } from "@medusajs/types"
3+
import type { OrderListResponse, OrderService } from "./types"
4+
5+
export type MedusaOrderServiceConfig = {
6+
defaultFields?: string
7+
}
8+
9+
export type MedusaOrderListInput = {
10+
limit?: number
11+
offset?: number
12+
enabled?: boolean
13+
}
14+
15+
export type MedusaOrderDetailInput = {
16+
id?: string
17+
enabled?: boolean
18+
}
19+
20+
/**
21+
* Creates an OrderService for Medusa SDK
22+
*
23+
* @example
24+
* ```typescript
25+
* import { createOrderHooks, createMedusaOrderService } from "@techsio/storefront-data"
26+
* import { sdk } from "@/lib/medusa-client"
27+
*
28+
* const orderHooks = createOrderHooks({
29+
* service: createMedusaOrderService(sdk, {
30+
* defaultFields: "id,display_id,status,total,items,created_at",
31+
* }),
32+
* queryKeys: orderQueryKeys,
33+
* })
34+
* ```
35+
*/
36+
export function createMedusaOrderService(
37+
sdk: Medusa,
38+
config?: MedusaOrderServiceConfig
39+
): OrderService<
40+
HttpTypes.StoreOrder,
41+
MedusaOrderListInput,
42+
MedusaOrderDetailInput
43+
> {
44+
const { defaultFields } = config ?? {}
45+
46+
return {
47+
async getOrders(
48+
params: MedusaOrderListInput,
49+
_signal?: AbortSignal
50+
): Promise<OrderListResponse<HttpTypes.StoreOrder>> {
51+
const response = await sdk.store.order.list({
52+
fields: defaultFields,
53+
limit: params.limit,
54+
offset: params.offset,
55+
})
56+
return {
57+
orders: response.orders,
58+
count: response.count,
59+
}
60+
},
61+
62+
async getOrder(
63+
params: MedusaOrderDetailInput,
64+
_signal?: AbortSignal
65+
): Promise<HttpTypes.StoreOrder | null> {
66+
if (!params.id) {
67+
return null
68+
}
69+
const response = await sdk.store.order.retrieve(params.id, {
70+
fields: defaultFields,
71+
})
72+
return response.order ?? null
73+
},
74+
}
75+
}

0 commit comments

Comments
 (0)