@instockng/api-client 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/enum-types.d.ts +8 -0
  2. package/dist/enum-types.js +5 -0
  3. package/dist/fetchers/carts.js +5 -0
  4. package/dist/hooks/admin/abandoned-carts.js +12 -8
  5. package/dist/hooks/admin/brands.js +15 -10
  6. package/dist/hooks/admin/customers.js +3 -2
  7. package/dist/hooks/admin/delivery-zones.js +24 -16
  8. package/dist/hooks/admin/discount-codes.js +24 -16
  9. package/dist/hooks/admin/inventory.js +15 -10
  10. package/dist/hooks/admin/orders.js +18 -12
  11. package/dist/hooks/admin/products.js +15 -10
  12. package/dist/hooks/admin/stats.js +3 -2
  13. package/dist/hooks/admin/variants.js +18 -12
  14. package/dist/hooks/admin/warehouses.js +15 -10
  15. package/dist/hooks/useApiConfig.d.ts +2 -1
  16. package/dist/hooks/useApiConfig.js +2 -2
  17. package/dist/provider.d.ts +7 -4
  18. package/dist/provider.js +5 -3
  19. package/dist/types.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/dist/apps/backend/src/generated/zod/index.d.ts +0 -1114
  22. package/dist/apps/backend/src/generated/zod/index.js +0 -670
  23. package/dist/apps/backend/src/http-app.d.ts +0 -40
  24. package/dist/apps/backend/src/http-app.js +0 -106
  25. package/dist/apps/backend/src/lib/brand-response.d.ts +0 -14
  26. package/dist/apps/backend/src/lib/brand-response.js +0 -8
  27. package/dist/apps/backend/src/lib/cart-helpers.d.ts +0 -280
  28. package/dist/apps/backend/src/lib/cart-helpers.js +0 -93
  29. package/dist/apps/backend/src/lib/cart-recovery.d.ts +0 -30
  30. package/dist/apps/backend/src/lib/cart-recovery.js +0 -147
  31. package/dist/apps/backend/src/lib/cart-response.d.ts +0 -121
  32. package/dist/apps/backend/src/lib/cart-response.js +0 -150
  33. package/dist/apps/backend/src/lib/clerk.d.ts +0 -18
  34. package/dist/apps/backend/src/lib/clerk.js +0 -167
  35. package/dist/apps/backend/src/lib/delivery-zone-response.d.ts +0 -62
  36. package/dist/apps/backend/src/lib/delivery-zone-response.js +0 -24
  37. package/dist/apps/backend/src/lib/discount-code-response.d.ts +0 -42
  38. package/dist/apps/backend/src/lib/discount-code-response.js +0 -19
  39. package/dist/apps/backend/src/lib/discount.d.ts +0 -20
  40. package/dist/apps/backend/src/lib/discount.js +0 -35
  41. package/dist/apps/backend/src/lib/inventory.d.ts +0 -26
  42. package/dist/apps/backend/src/lib/inventory.js +0 -160
  43. package/dist/apps/backend/src/lib/meta-capi.d.ts +0 -48
  44. package/dist/apps/backend/src/lib/meta-capi.js +0 -120
  45. package/dist/apps/backend/src/lib/openapi.d.ts +0 -36
  46. package/dist/apps/backend/src/lib/openapi.js +0 -69
  47. package/dist/apps/backend/src/lib/order-recovery.d.ts +0 -367
  48. package/dist/apps/backend/src/lib/order-recovery.js +0 -373
  49. package/dist/apps/backend/src/lib/order-response.d.ts +0 -136
  50. package/dist/apps/backend/src/lib/order-response.js +0 -61
  51. package/dist/apps/backend/src/lib/pricing.d.ts +0 -39
  52. package/dist/apps/backend/src/lib/pricing.js +0 -62
  53. package/dist/apps/backend/src/lib/prisma.d.ts +0 -9
  54. package/dist/apps/backend/src/lib/prisma.js +0 -30
  55. package/dist/apps/backend/src/lib/product-response.d.ts +0 -82
  56. package/dist/apps/backend/src/lib/product-response.js +0 -29
  57. package/dist/apps/backend/src/lib/utils.d.ts +0 -32
  58. package/dist/apps/backend/src/lib/utils.js +0 -63
  59. package/dist/apps/backend/src/middleware/clerk-auth.d.ts +0 -8
  60. package/dist/apps/backend/src/middleware/clerk-auth.js +0 -89
  61. package/dist/apps/backend/src/middleware/cors.d.ts +0 -8
  62. package/dist/apps/backend/src/middleware/cors.js +0 -11
  63. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.d.ts +0 -55
  64. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.js +0 -125
  65. package/dist/apps/backend/src/notifications/producers/order-notification.d.ts +0 -9
  66. package/dist/apps/backend/src/notifications/producers/order-notification.js +0 -18
  67. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.d.ts +0 -10
  68. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.js +0 -11
  69. package/dist/apps/backend/src/routes/admin/abandoned-carts.d.ts +0 -605
  70. package/dist/apps/backend/src/routes/admin/abandoned-carts.js +0 -194
  71. package/dist/apps/backend/src/routes/admin/brands.d.ts +0 -175
  72. package/dist/apps/backend/src/routes/admin/brands.js +0 -118
  73. package/dist/apps/backend/src/routes/admin/customers.d.ts +0 -306
  74. package/dist/apps/backend/src/routes/admin/customers.js +0 -39
  75. package/dist/apps/backend/src/routes/admin/delivery-zones.d.ts +0 -438
  76. package/dist/apps/backend/src/routes/admin/delivery-zones.js +0 -300
  77. package/dist/apps/backend/src/routes/admin/discount-codes.d.ts +0 -478
  78. package/dist/apps/backend/src/routes/admin/discount-codes.js +0 -418
  79. package/dist/apps/backend/src/routes/admin/inventory.d.ts +0 -273
  80. package/dist/apps/backend/src/routes/admin/inventory.js +0 -189
  81. package/dist/apps/backend/src/routes/admin/orders.d.ts +0 -1478
  82. package/dist/apps/backend/src/routes/admin/orders.js +0 -503
  83. package/dist/apps/backend/src/routes/admin/products.d.ts +0 -860
  84. package/dist/apps/backend/src/routes/admin/products.js +0 -107
  85. package/dist/apps/backend/src/routes/admin/stats.d.ts +0 -288
  86. package/dist/apps/backend/src/routes/admin/stats.js +0 -55
  87. package/dist/apps/backend/src/routes/admin/variants.d.ts +0 -239
  88. package/dist/apps/backend/src/routes/admin/variants.js +0 -173
  89. package/dist/apps/backend/src/routes/admin/warehouses.d.ts +0 -373
  90. package/dist/apps/backend/src/routes/admin/warehouses.js +0 -123
  91. package/dist/apps/backend/src/routes/public/brands.d.ts +0 -40
  92. package/dist/apps/backend/src/routes/public/brands.js +0 -38
  93. package/dist/apps/backend/src/routes/public/carts.d.ts +0 -2655
  94. package/dist/apps/backend/src/routes/public/carts.js +0 -631
  95. package/dist/apps/backend/src/routes/public/delivery-zones.d.ts +0 -35
  96. package/dist/apps/backend/src/routes/public/delivery-zones.js +0 -62
  97. package/dist/apps/backend/src/routes/public/orders.d.ts +0 -323
  98. package/dist/apps/backend/src/routes/public/orders.js +0 -160
  99. package/dist/apps/backend/src/routes/public/products.d.ts +0 -449
  100. package/dist/apps/backend/src/routes/public/products.js +0 -133
  101. package/dist/apps/backend/src/types/index.d.ts +0 -42
  102. package/dist/apps/backend/src/types/index.js +0 -2
  103. package/dist/apps/backend/src/validators/brand.d.ts +0 -17
  104. package/dist/apps/backend/src/validators/brand.js +0 -15
  105. package/dist/apps/backend/src/validators/delivery-zone.d.ts +0 -31
  106. package/dist/apps/backend/src/validators/delivery-zone.js +0 -51
  107. package/dist/apps/backend/src/validators/discount-code.d.ts +0 -74
  108. package/dist/apps/backend/src/validators/discount-code.js +0 -50
  109. package/dist/apps/backend/src/validators/inventory.d.ts +0 -20
  110. package/dist/apps/backend/src/validators/inventory.js +0 -15
  111. package/dist/apps/backend/src/validators/order.d.ts +0 -87
  112. package/dist/apps/backend/src/validators/order.js +0 -61
  113. package/dist/apps/backend/src/validators/product.d.ts +0 -18
  114. package/dist/apps/backend/src/validators/product.js +0 -19
  115. package/dist/apps/backend/src/validators/variant.d.ts +0 -19
  116. package/dist/apps/backend/src/validators/variant.js +0 -19
  117. package/dist/apps/backend/src/validators/warehouse.d.ts +0 -15
  118. package/dist/apps/backend/src/validators/warehouse.js +0 -15
  119. package/dist/packages/api-client/src/backend-types.d.ts +0 -10
  120. package/dist/packages/api-client/src/backend-types.js +0 -10
  121. package/dist/packages/api-client/src/client.d.ts +0 -20
  122. package/dist/packages/api-client/src/client.js +0 -40
  123. package/dist/packages/api-client/src/fetchers/brands.d.ts +0 -25
  124. package/dist/packages/api-client/src/fetchers/brands.js +0 -26
  125. package/dist/packages/api-client/src/fetchers/carts.d.ts +0 -2335
  126. package/dist/packages/api-client/src/fetchers/carts.js +0 -169
  127. package/dist/packages/api-client/src/fetchers/delivery-zones.d.ts +0 -28
  128. package/dist/packages/api-client/src/fetchers/delivery-zones.js +0 -26
  129. package/dist/packages/api-client/src/fetchers/index.d.ts +0 -22
  130. package/dist/packages/api-client/src/fetchers/index.js +0 -22
  131. package/dist/packages/api-client/src/fetchers/orders.d.ts +0 -283
  132. package/dist/packages/api-client/src/fetchers/orders.js +0 -44
  133. package/dist/packages/api-client/src/fetchers/products.d.ts +0 -386
  134. package/dist/packages/api-client/src/fetchers/products.js +0 -42
  135. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.d.ts +0 -535
  136. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.js +0 -79
  137. package/dist/packages/api-client/src/hooks/admin/brands.d.ts +0 -79
  138. package/dist/packages/api-client/src/hooks/admin/brands.js +0 -103
  139. package/dist/packages/api-client/src/hooks/admin/customers.d.ts +0 -278
  140. package/dist/packages/api-client/src/hooks/admin/customers.js +0 -25
  141. package/dist/packages/api-client/src/hooks/admin/delivery-zones.d.ts +0 -270
  142. package/dist/packages/api-client/src/hooks/admin/delivery-zones.js +0 -168
  143. package/dist/packages/api-client/src/hooks/admin/discount-codes.d.ts +0 -299
  144. package/dist/packages/api-client/src/hooks/admin/discount-codes.js +0 -157
  145. package/dist/packages/api-client/src/hooks/admin/index.d.ts +0 -16
  146. package/dist/packages/api-client/src/hooks/admin/index.js +0 -16
  147. package/dist/packages/api-client/src/hooks/admin/inventory.d.ts +0 -224
  148. package/dist/packages/api-client/src/hooks/admin/inventory.js +0 -102
  149. package/dist/packages/api-client/src/hooks/admin/orders.d.ts +0 -1380
  150. package/dist/packages/api-client/src/hooks/admin/orders.js +0 -169
  151. package/dist/packages/api-client/src/hooks/admin/products.d.ts +0 -374
  152. package/dist/packages/api-client/src/hooks/admin/products.js +0 -84
  153. package/dist/packages/api-client/src/hooks/admin/stats.d.ts +0 -277
  154. package/dist/packages/api-client/src/hooks/admin/stats.js +0 -24
  155. package/dist/packages/api-client/src/hooks/admin/variants.d.ts +0 -115
  156. package/dist/packages/api-client/src/hooks/admin/variants.js +0 -121
  157. package/dist/packages/api-client/src/hooks/admin/warehouses.d.ts +0 -277
  158. package/dist/packages/api-client/src/hooks/admin/warehouses.js +0 -103
  159. package/dist/packages/api-client/src/hooks/public/brands.d.ts +0 -33
  160. package/dist/packages/api-client/src/hooks/public/brands.js +0 -30
  161. package/dist/packages/api-client/src/hooks/public/carts.d.ts +0 -2405
  162. package/dist/packages/api-client/src/hooks/public/carts.js +0 -213
  163. package/dist/packages/api-client/src/hooks/public/delivery-zones.d.ts +0 -34
  164. package/dist/packages/api-client/src/hooks/public/delivery-zones.js +0 -28
  165. package/dist/packages/api-client/src/hooks/public/index.d.ts +0 -10
  166. package/dist/packages/api-client/src/hooks/public/index.js +0 -10
  167. package/dist/packages/api-client/src/hooks/public/orders.d.ts +0 -302
  168. package/dist/packages/api-client/src/hooks/public/orders.js +0 -50
  169. package/dist/packages/api-client/src/hooks/public/products.d.ts +0 -398
  170. package/dist/packages/api-client/src/hooks/public/products.js +0 -47
  171. package/dist/packages/api-client/src/hooks/use-query-unwrapped.d.ts +0 -20
  172. package/dist/packages/api-client/src/hooks/use-query-unwrapped.js +0 -22
  173. package/dist/packages/api-client/src/hooks/useApiConfig.d.ts +0 -11
  174. package/dist/packages/api-client/src/hooks/useApiConfig.js +0 -14
  175. package/dist/packages/api-client/src/index.d.ts +0 -20
  176. package/dist/packages/api-client/src/index.js +0 -25
  177. package/dist/packages/api-client/src/provider.d.ts +0 -33
  178. package/dist/packages/api-client/src/provider.js +0 -52
  179. package/dist/packages/api-client/src/rpc-client.d.ts +0 -9035
  180. package/dist/packages/api-client/src/rpc-client.js +0 -78
  181. package/dist/packages/api-client/src/rpc-types.d.ts +0 -76
  182. package/dist/packages/api-client/src/rpc-types.js +0 -7
  183. package/dist/packages/api-client/src/types.d.ts +0 -33
  184. package/dist/packages/api-client/src/types.js +0 -16
  185. package/dist/packages/api-client/src/utils/query-keys.d.ts +0 -106
  186. package/dist/packages/api-client/src/utils/query-keys.js +0 -108
@@ -1,62 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { zValidator } from '@hono/zod-validator';
3
- import { z } from 'zod';
4
- import { getPrismaClient } from '../../lib/prisma';
5
- const app = new Hono()
6
- // GET delivery zones - Get all active states with delivery zones
7
- .get('/', zValidator('query', z.object({
8
- brandId: z.uuid().optional(),
9
- })), async (c) => {
10
- try {
11
- const prisma = getPrismaClient(c.env.DATABASE_URL);
12
- const { brandId } = c.req.valid('query');
13
- // Get active states
14
- const states = await prisma.state.findMany({
15
- where: { isActive: true, deletedAt: null },
16
- orderBy: { name: 'asc' },
17
- });
18
- // Fetch both global and brand-specific zones
19
- const zones = await prisma.deliveryZone.findMany({
20
- where: {
21
- isActive: true,
22
- deletedAt: null,
23
- OR: [{ brandId: null }, ...(brandId ? [{ brandId }] : [])],
24
- },
25
- include: { state: true },
26
- orderBy: [{ stateId: 'asc' }, { name: 'asc' }],
27
- });
28
- const byKey = new Map();
29
- for (const z of zones) {
30
- const key = `${z.stateId}:${z.name.toLowerCase()}`;
31
- const existing = byKey.get(key);
32
- if (!existing) {
33
- byKey.set(key, z);
34
- }
35
- else if (z.brandId && !existing.brandId) {
36
- byKey.set(key, z); // prefer brand override
37
- }
38
- }
39
- const data = states.map((s) => ({
40
- id: s.id,
41
- name: s.name,
42
- zones: Array.from(byKey.values())
43
- .filter((z) => z.stateId === s.id)
44
- .map((z) => ({
45
- id: z.id,
46
- name: z.name,
47
- deliveryCost: Number(z.deliveryCost),
48
- freeShippingThreshold: z.freeShippingThreshold ? Number(z.freeShippingThreshold) : null,
49
- allowCOD: z.allowCOD && !z.waybillOnly,
50
- allowOnline: z.allowOnline,
51
- waybillOnly: z.waybillOnly,
52
- estimatedDays: z.estimatedDays ?? null,
53
- })),
54
- }));
55
- return c.json(data, 200);
56
- }
57
- catch (error) {
58
- console.error('Error fetching delivery zones:', error);
59
- return c.json({ error: { code: 'INTERNAL_ERROR', message: error.message } }, 500);
60
- }
61
- });
62
- export default app;
@@ -1,323 +0,0 @@
1
- import { AppContext } from '../../types';
2
- declare const app: import("hono/hono-base").HonoBase<AppContext, {
3
- "/:id/:token": {
4
- $get: {
5
- input: {
6
- param: {
7
- id: string;
8
- } & {
9
- token: string;
10
- };
11
- };
12
- output: {
13
- error: {
14
- code: string;
15
- message: string;
16
- };
17
- };
18
- outputFormat: "json";
19
- status: 404;
20
- } | {
21
- input: {
22
- param: {
23
- id: string;
24
- } & {
25
- token: string;
26
- };
27
- };
28
- output: {
29
- canConfirm: boolean;
30
- confirmationMessage: string;
31
- subtotal: number;
32
- deliveryCharge: number;
33
- totalPrice: number;
34
- discountAmount: number;
35
- createdAt: string;
36
- updatedAt: string;
37
- deletedAt: string;
38
- prospectSince: string;
39
- lastRecoveryAttemptAt: string;
40
- brand: {
41
- createdAt: string;
42
- updatedAt: string;
43
- deletedAt: string;
44
- name: string;
45
- id: string;
46
- slug: string;
47
- logoUrl: string | null;
48
- siteUrl: string;
49
- domain: string;
50
- metaPixelId: string | null;
51
- };
52
- deliveryZone: {
53
- deliveryCost: number;
54
- freeShippingThreshold: number;
55
- createdAt: string;
56
- updatedAt: string;
57
- deletedAt: string;
58
- state: {
59
- createdAt: string;
60
- updatedAt: string;
61
- deletedAt: string;
62
- name: string;
63
- id: string;
64
- isActive: boolean;
65
- };
66
- name: string;
67
- id: string;
68
- brandId: string | null;
69
- stateId: string;
70
- allowCOD: boolean;
71
- allowOnline: boolean;
72
- waybillOnly: boolean;
73
- estimatedDays: number | null;
74
- isActive: boolean;
75
- };
76
- items: {
77
- priceAtPurchase: number;
78
- variant: {
79
- price: number;
80
- createdAt: string;
81
- updatedAt: string;
82
- deletedAt: string;
83
- product: {
84
- createdAt: string;
85
- updatedAt: string;
86
- deletedAt: string;
87
- name: string;
88
- id: string;
89
- slug: string;
90
- brandId: string;
91
- isActive: boolean;
92
- description: string | null;
93
- thumbnailUrl: string | null;
94
- quantityDiscounts: string | number | boolean | {
95
- [x: string]: string | number | boolean | /*elided*/ any | {
96
- [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
97
- length: number;
98
- toString: never;
99
- toLocaleString: never;
100
- pop: never;
101
- push: never;
102
- concat: never;
103
- join: never;
104
- reverse: never;
105
- shift: never;
106
- slice: never;
107
- sort: never;
108
- splice: never;
109
- unshift: never;
110
- indexOf: never;
111
- lastIndexOf: never;
112
- every: never;
113
- some: never;
114
- forEach: never;
115
- map: never;
116
- filter: never;
117
- reduce: never;
118
- reduceRight: never;
119
- find: never;
120
- findIndex: never;
121
- fill: never;
122
- copyWithin: never;
123
- entries: never;
124
- keys: never;
125
- values: never;
126
- includes: never;
127
- flatMap: never;
128
- flat: never;
129
- [Symbol.iterator]: never;
130
- readonly [Symbol.unscopables]: {
131
- [x: number]: boolean;
132
- length?: boolean;
133
- toString?: boolean;
134
- toLocaleString?: boolean;
135
- pop?: boolean;
136
- push?: boolean;
137
- concat?: boolean;
138
- join?: boolean;
139
- reverse?: boolean;
140
- shift?: boolean;
141
- slice?: boolean;
142
- sort?: boolean;
143
- splice?: boolean;
144
- unshift?: boolean;
145
- indexOf?: boolean;
146
- lastIndexOf?: boolean;
147
- every?: boolean;
148
- some?: boolean;
149
- forEach?: boolean;
150
- map?: boolean;
151
- filter?: boolean;
152
- reduce?: boolean;
153
- reduceRight?: boolean;
154
- find?: boolean;
155
- findIndex?: boolean;
156
- fill?: boolean;
157
- copyWithin?: boolean;
158
- entries?: boolean;
159
- keys?: boolean;
160
- values?: boolean;
161
- includes?: boolean;
162
- flatMap?: boolean;
163
- flat?: boolean;
164
- };
165
- };
166
- } | {
167
- [x: number]: string | number | boolean | {
168
- [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
169
- } | /*elided*/ any;
170
- length: number;
171
- toString: never;
172
- toLocaleString: never;
173
- pop: never;
174
- push: never;
175
- concat: never;
176
- join: never;
177
- reverse: never;
178
- shift: never;
179
- slice: never;
180
- sort: never;
181
- splice: never;
182
- unshift: never;
183
- indexOf: never;
184
- lastIndexOf: never;
185
- every: never;
186
- some: never;
187
- forEach: never;
188
- map: never;
189
- filter: never;
190
- reduce: never;
191
- reduceRight: never;
192
- find: never;
193
- findIndex: never;
194
- fill: never;
195
- copyWithin: never;
196
- entries: never;
197
- keys: never;
198
- values: never;
199
- includes: never;
200
- flatMap: never;
201
- flat: never;
202
- [Symbol.iterator]: never;
203
- readonly [Symbol.unscopables]: {
204
- [x: number]: boolean;
205
- length?: boolean;
206
- toString?: boolean;
207
- toLocaleString?: boolean;
208
- pop?: boolean;
209
- push?: boolean;
210
- concat?: boolean;
211
- join?: boolean;
212
- reverse?: boolean;
213
- shift?: boolean;
214
- slice?: boolean;
215
- sort?: boolean;
216
- splice?: boolean;
217
- unshift?: boolean;
218
- indexOf?: boolean;
219
- lastIndexOf?: boolean;
220
- every?: boolean;
221
- some?: boolean;
222
- forEach?: boolean;
223
- map?: boolean;
224
- filter?: boolean;
225
- reduce?: boolean;
226
- reduceRight?: boolean;
227
- find?: boolean;
228
- findIndex?: boolean;
229
- fill?: boolean;
230
- copyWithin?: boolean;
231
- entries?: boolean;
232
- keys?: boolean;
233
- values?: boolean;
234
- includes?: boolean;
235
- flatMap?: boolean;
236
- flat?: boolean;
237
- };
238
- };
239
- };
240
- name: string | null;
241
- id: string;
242
- isActive: boolean;
243
- thumbnailUrl: string | null;
244
- productId: string;
245
- sku: string;
246
- trackInventory: boolean;
247
- lowStockThreshold: number | null;
248
- };
249
- warehouse: {
250
- createdAt: string;
251
- updatedAt: string;
252
- deletedAt: string;
253
- name: string;
254
- id: string;
255
- isActive: boolean;
256
- address: string | null;
257
- city: string | null;
258
- state: string | null;
259
- };
260
- id: string;
261
- orderId: string;
262
- variantId: string;
263
- warehouseId: string | null;
264
- quantity: number;
265
- }[];
266
- id: string;
267
- email: string | null;
268
- brandId: string;
269
- deliveryZoneId: string;
270
- recoveryAttempts: number;
271
- recoveryDiscountCodeId: string | null;
272
- wasRecovered: boolean;
273
- estimatedDays: number | null;
274
- orderNumber: number;
275
- firstName: string;
276
- lastName: string;
277
- phone: string;
278
- address: string;
279
- city: string;
280
- discountCodeId: string | null;
281
- paymentMethod: import("@prisma/client").$Enums.PaymentMethod;
282
- paystackReference: string | null;
283
- status: import("@prisma/client").$Enums.OrderStatus;
284
- cancellationReason: string | null;
285
- prospectReason: import("@prisma/client").$Enums.ProspectReason | null;
286
- userActionToken: string;
287
- };
288
- outputFormat: "json";
289
- status: 200;
290
- } | {
291
- input: {
292
- param: {
293
- id: string;
294
- } & {
295
- token: string;
296
- };
297
- };
298
- output: {
299
- error: {
300
- code: string;
301
- message: string;
302
- };
303
- };
304
- outputFormat: "json";
305
- status: 500;
306
- };
307
- };
308
- } & {
309
- "/confirm": {
310
- $post: {
311
- input: {};
312
- output: {};
313
- outputFormat: string;
314
- status: import("hono/utils/http-status").StatusCode;
315
- } | {
316
- input: {};
317
- output: {};
318
- outputFormat: string;
319
- status: import("hono/utils/http-status").StatusCode;
320
- };
321
- };
322
- }, "/">;
323
- export default app;
@@ -1,160 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { zValidator } from '@hono/zod-validator';
3
- import { z } from 'zod';
4
- import { getPrismaClient } from '../../lib/prisma';
5
- import { confirmProspectOrder } from '../../lib/order-recovery';
6
- import { formatOrderResponse } from '../../lib/order-response';
7
- import { enqueueOrderNotification } from '../../notifications/producers/order-notification';
8
- import { OrderStatus } from '@prisma/client';
9
- const app = new Hono()
10
- // GET order by ID and token (for order tracking and confirmation)
11
- .get('/:id/:token', zValidator('param', z.object({
12
- id: z.uuid(),
13
- token: z.uuid(),
14
- })), async (c) => {
15
- try {
16
- const { id, token } = c.req.valid('param');
17
- const prisma = getPrismaClient(c.env.DATABASE_URL);
18
- const order = await prisma.order.findFirst({
19
- where: {
20
- id,
21
- userActionToken: token,
22
- deletedAt: null
23
- },
24
- include: {
25
- items: {
26
- include: {
27
- variant: {
28
- include: {
29
- product: true,
30
- },
31
- },
32
- warehouse: true,
33
- },
34
- },
35
- brand: true,
36
- deliveryZone: {
37
- include: {
38
- state: true,
39
- },
40
- },
41
- },
42
- });
43
- if (!order) {
44
- return c.json({ error: { code: 'ORDER_NOT_FOUND', message: 'Order not found or invalid token' } }, 404);
45
- }
46
- // Determine if order can be confirmed
47
- const canConfirm = order.status === OrderStatus.prospect;
48
- let confirmationMessage;
49
- if (order.status === OrderStatus.pending) {
50
- confirmationMessage = 'This order has already been confirmed and is being processed.';
51
- }
52
- else if (order.status === OrderStatus.cancelled) {
53
- confirmationMessage = 'This order has been cancelled. Please place a new order.';
54
- }
55
- else if (order.status === OrderStatus.shipped) {
56
- confirmationMessage = 'This order has been shipped.';
57
- }
58
- else if (order.status === OrderStatus.delivered) {
59
- confirmationMessage = 'This order has been delivered.';
60
- }
61
- else if (order.status === OrderStatus.prospect) {
62
- confirmationMessage = 'Please confirm your order to proceed with delivery.';
63
- }
64
- // Use formatOrderResponse to format the order data
65
- const formattedOrder = formatOrderResponse(order);
66
- return c.json({ ...formattedOrder, canConfirm, confirmationMessage }, 200);
67
- }
68
- catch (error) {
69
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to retrieve order' } }, 500);
70
- }
71
- })
72
- // POST confirm prospect order
73
- .post('/confirm', zValidator('json', z.object({
74
- orderId: z.uuid(),
75
- token: z.string(),
76
- })), async (c) => {
77
- try {
78
- const { orderId, token } = c.req.valid('json');
79
- const prisma = getPrismaClient(c.env.DATABASE_URL);
80
- // First verify the order exists and is in prospect status
81
- const order = await prisma.order.findFirst({
82
- where: {
83
- id: orderId,
84
- userActionToken: token,
85
- status: OrderStatus.prospect,
86
- deletedAt: null,
87
- },
88
- });
89
- if (!order) {
90
- // Check if order exists but in different status
91
- const existingOrder = await prisma.order.findFirst({
92
- where: {
93
- id: orderId,
94
- userActionToken: token,
95
- deletedAt: null,
96
- },
97
- });
98
- if (existingOrder) {
99
- if (existingOrder.status === OrderStatus.pending) {
100
- return c.json({
101
- error: {
102
- code: 'ALREADY_CONFIRMED',
103
- message: 'This order has already been confirmed'
104
- }
105
- }, 400);
106
- }
107
- else if (existingOrder.status === OrderStatus.cancelled) {
108
- return c.json({
109
- error: {
110
- code: 'ORDER_CANCELLED',
111
- message: 'This order has been cancelled'
112
- }
113
- }, 400);
114
- }
115
- else {
116
- return c.json({
117
- error: {
118
- code: 'INVALID_STATUS',
119
- message: `Order cannot be confirmed in ${existingOrder.status} status`
120
- }
121
- }, 400);
122
- }
123
- }
124
- return c.json({
125
- error: {
126
- code: 'ORDER_NOT_FOUND',
127
- message: 'Invalid order or token'
128
- }
129
- }, 404);
130
- }
131
- // Confirm the order using the recovery function
132
- const confirmedOrder = await confirmProspectOrder(prisma, orderId, token);
133
- // Queue confirmation notification
134
- try {
135
- await enqueueOrderNotification(c.env, 'order_confirmation', confirmedOrder.id);
136
- }
137
- catch (notificationError) {
138
- console.error('Failed to queue confirmation notification:', notificationError);
139
- // Don't fail the request if notification fails
140
- }
141
- return c.status(200);
142
- }
143
- catch (error) {
144
- if (error.message === 'Invalid order or token') {
145
- return c.json({
146
- error: {
147
- code: 'INVALID_TOKEN',
148
- message: 'Invalid order or token'
149
- }
150
- }, 400);
151
- }
152
- return c.json({
153
- error: {
154
- code: 'INTERNAL_ERROR',
155
- message: 'Failed to confirm order'
156
- }
157
- }, 500);
158
- }
159
- });
160
- export default app;