@instockng/api-client 1.0.5 → 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 -83
  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 -108
  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 -26
  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 -176
  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 -165
  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 -107
  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 -175
  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 -89
  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 -25
  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 -127
  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 -108
  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 -12
  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 -36
  178. package/dist/packages/api-client/src/provider.js +0 -54
  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 -37
  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,300 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { zValidator } from '@hono/zod-validator';
3
- import { getPrismaClient } from '../../lib/prisma';
4
- import { createStateSchema, updateStateSchema, createDeliveryZoneSchema, updateDeliveryZoneSchema, } from '../../validators/delivery-zone';
5
- import { formatStateResponse } from '../../lib/delivery-zone-response';
6
- import { formatDeliveryZoneResponse } from '../../lib/delivery-zone-response';
7
- const app = new Hono()
8
- // List all states
9
- .get('/states', async (c) => {
10
- try {
11
- const prisma = getPrismaClient(c.env.DATABASE_URL);
12
- const states = await prisma.state.findMany({
13
- where: { deletedAt: null },
14
- include: {
15
- deliveryZones: {
16
- where: { deletedAt: null },
17
- orderBy: { name: 'asc' },
18
- include: {
19
- brand: true,
20
- state: true,
21
- },
22
- },
23
- },
24
- orderBy: { name: 'asc' },
25
- });
26
- return c.json(states.map((s) => ({
27
- ...formatStateResponse(s),
28
- deliveryZones: s.deliveryZones.map(formatDeliveryZoneResponse),
29
- })));
30
- }
31
- catch (error) {
32
- console.error('Error fetching states:', error);
33
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to fetch states' } }, 500);
34
- }
35
- })
36
- // Create state
37
- .post('/states', zValidator('json', createStateSchema), async (c) => {
38
- try {
39
- const input = c.req.valid('json');
40
- const prisma = getPrismaClient(c.env.DATABASE_URL);
41
- // Check if state name already exists
42
- const existing = await prisma.state.findFirst({
43
- where: { name: input.name, deletedAt: null },
44
- });
45
- if (existing) {
46
- return c.json({ error: { code: 'STATE_EXISTS', message: 'State with this name already exists' } }, 400);
47
- }
48
- const state = await prisma.state.create({
49
- data: {
50
- name: input.name,
51
- isActive: input.isActive ?? true,
52
- },
53
- });
54
- return c.json(formatStateResponse(state), 201);
55
- }
56
- catch (error) {
57
- console.error('Error creating state:', error);
58
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to create state' } }, 500);
59
- }
60
- })
61
- // Update state
62
- .patch('/states/:id', zValidator('json', updateStateSchema), async (c) => {
63
- try {
64
- const stateId = c.req.param('id');
65
- const input = c.req.valid('json');
66
- const prisma = getPrismaClient(c.env.DATABASE_URL);
67
- const state = await prisma.state.findFirst({
68
- where: { id: stateId, deletedAt: null },
69
- });
70
- if (!state) {
71
- return c.json({ error: { code: 'STATE_NOT_FOUND', message: 'State not found' } }, 404);
72
- }
73
- // Check for name conflicts if name is being updated
74
- if (input.name && input.name !== state.name) {
75
- const existing = await prisma.state.findFirst({
76
- where: { name: input.name, deletedAt: null, id: { not: stateId } },
77
- });
78
- if (existing) {
79
- return c.json({ error: { code: 'STATE_EXISTS', message: 'State with this name already exists' } }, 400);
80
- }
81
- }
82
- const updated = await prisma.state.update({
83
- where: { id: stateId },
84
- data: {
85
- name: input.name,
86
- isActive: input.isActive,
87
- },
88
- });
89
- return c.json(formatStateResponse(updated));
90
- }
91
- catch (error) {
92
- console.error('Error updating state:', error);
93
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to update state' } }, 500);
94
- }
95
- })
96
- // Soft delete state
97
- .delete('/states/:id', async (c) => {
98
- try {
99
- const stateId = c.req.param('id');
100
- const prisma = getPrismaClient(c.env.DATABASE_URL);
101
- const state = await prisma.state.findFirst({
102
- where: { id: stateId, deletedAt: null },
103
- });
104
- if (!state) {
105
- return c.json({ error: { code: 'STATE_NOT_FOUND', message: 'State not found' } }, 404);
106
- }
107
- // Soft delete zones in this state as well
108
- await prisma.$transaction([
109
- prisma.deliveryZone.updateMany({
110
- where: { stateId, deletedAt: null },
111
- data: { deletedAt: new Date() },
112
- }),
113
- prisma.state.update({
114
- where: { id: stateId },
115
- data: { deletedAt: new Date() },
116
- }),
117
- ]);
118
- return c.status(204);
119
- }
120
- catch (error) {
121
- console.error('Error deleting state:', error);
122
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to delete state' } }, 500);
123
- }
124
- })
125
- // ============ DELIVERY ZONES ============
126
- // List delivery zones with optional filters
127
- .get('/zones', async (c) => {
128
- try {
129
- const prisma = getPrismaClient(c.env.DATABASE_URL);
130
- const stateId = c.req.query('stateId');
131
- const brandId = c.req.query('brandId');
132
- const zones = await prisma.deliveryZone.findMany({
133
- where: {
134
- deletedAt: null,
135
- ...(stateId && { stateId }),
136
- ...(brandId && { brandId }),
137
- },
138
- include: {
139
- state: true,
140
- brand: true,
141
- },
142
- orderBy: [{ state: { name: 'asc' } }, { name: 'asc' }],
143
- });
144
- return c.json(zones.map(formatDeliveryZoneResponse));
145
- }
146
- catch (error) {
147
- console.error('Error fetching delivery zones:', error);
148
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to fetch delivery zones' } }, 500);
149
- }
150
- })
151
- // Create delivery zone
152
- .post('/zones', zValidator('json', createDeliveryZoneSchema), async (c) => {
153
- try {
154
- const input = c.req.valid('json');
155
- const prisma = getPrismaClient(c.env.DATABASE_URL);
156
- // Validate state exists
157
- const state = await prisma.state.findFirst({
158
- where: { id: input.stateId, deletedAt: null },
159
- });
160
- if (!state) {
161
- return c.json({ error: { code: 'STATE_NOT_FOUND', message: 'State not found' } }, 404);
162
- }
163
- // Validate brand if provided
164
- if (input.brandId) {
165
- const brand = await prisma.brand.findFirst({
166
- where: { id: input.brandId, deletedAt: null },
167
- });
168
- if (!brand) {
169
- return c.json({ error: { code: 'BRAND_NOT_FOUND', message: 'Brand not found' } }, 404);
170
- }
171
- }
172
- // Check for duplicate zone name in this state
173
- const existing = await prisma.deliveryZone.findFirst({
174
- where: {
175
- stateId: input.stateId,
176
- brandId: input.brandId ?? null,
177
- name: input.name,
178
- deletedAt: null,
179
- },
180
- });
181
- if (existing) {
182
- return c.json({ error: { code: 'ZONE_EXISTS', message: 'Zone with this name already exists in this state' } }, 400);
183
- }
184
- // Enforce waybillOnly => allowCOD = false
185
- const allowCOD = input.waybillOnly ? false : (input.allowCOD ?? true);
186
- const zone = await prisma.deliveryZone.create({
187
- data: {
188
- stateId: input.stateId,
189
- brandId: input.brandId ?? null,
190
- name: input.name,
191
- deliveryCost: input.deliveryCost,
192
- freeShippingThreshold: input.freeShippingThreshold ?? null,
193
- allowCOD,
194
- allowOnline: input.allowOnline ?? true,
195
- waybillOnly: input.waybillOnly ?? false,
196
- estimatedDays: input.estimatedDays ?? null,
197
- isActive: input.isActive ?? true,
198
- },
199
- include: {
200
- state: true,
201
- brand: true,
202
- },
203
- });
204
- return c.json(formatDeliveryZoneResponse(zone), 201);
205
- }
206
- catch (error) {
207
- console.error('Error creating delivery zone:', error);
208
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to create delivery zone' } }, 500);
209
- }
210
- })
211
- // Update delivery zone
212
- .patch('/zones/:id', zValidator('json', updateDeliveryZoneSchema), async (c) => {
213
- try {
214
- const zoneId = c.req.param('id');
215
- const input = c.req.valid('json');
216
- const prisma = getPrismaClient(c.env.DATABASE_URL);
217
- const zone = await prisma.deliveryZone.findFirst({
218
- where: { id: zoneId, deletedAt: null },
219
- });
220
- if (!zone) {
221
- return c.json({ error: { code: 'ZONE_NOT_FOUND', message: 'Delivery zone not found' } }, 404);
222
- }
223
- // Check for name conflicts if name is being updated
224
- if (input.name && input.name !== zone.name) {
225
- const existing = await prisma.deliveryZone.findFirst({
226
- where: {
227
- stateId: zone.stateId,
228
- brandId: zone.brandId,
229
- name: input.name,
230
- deletedAt: null,
231
- id: { not: zoneId },
232
- },
233
- });
234
- if (existing) {
235
- return c.json({ error: { code: 'ZONE_EXISTS', message: 'Zone with this name already exists in this state' } }, 400);
236
- }
237
- }
238
- // Build update data
239
- const updateData = {};
240
- if (input.name !== undefined)
241
- updateData.name = input.name;
242
- if (input.deliveryCost !== undefined)
243
- updateData.deliveryCost = input.deliveryCost;
244
- if (input.freeShippingThreshold !== undefined)
245
- updateData.freeShippingThreshold = input.freeShippingThreshold;
246
- if (input.allowOnline !== undefined)
247
- updateData.allowOnline = input.allowOnline;
248
- if (input.estimatedDays !== undefined)
249
- updateData.estimatedDays = input.estimatedDays;
250
- if (input.isActive !== undefined)
251
- updateData.isActive = input.isActive;
252
- // Handle waybillOnly and allowCOD together
253
- if (input.waybillOnly !== undefined) {
254
- updateData.waybillOnly = input.waybillOnly;
255
- if (input.waybillOnly) {
256
- updateData.allowCOD = false;
257
- }
258
- else if (input.allowCOD !== undefined) {
259
- updateData.allowCOD = input.allowCOD;
260
- }
261
- }
262
- else if (input.allowCOD !== undefined) {
263
- updateData.allowCOD = input.allowCOD;
264
- }
265
- const updated = await prisma.deliveryZone.update({
266
- where: { id: zoneId },
267
- data: updateData,
268
- include: {
269
- state: true,
270
- brand: true,
271
- },
272
- });
273
- return c.json(formatDeliveryZoneResponse(updated));
274
- }
275
- catch (error) {
276
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to update delivery zone' } }, 500);
277
- }
278
- })
279
- // Soft delete delivery zone
280
- .delete('/zones/:id', async (c) => {
281
- try {
282
- const zoneId = c.req.param('id');
283
- const prisma = getPrismaClient(c.env.DATABASE_URL);
284
- const zone = await prisma.deliveryZone.findFirst({
285
- where: { id: zoneId, deletedAt: null },
286
- });
287
- if (!zone) {
288
- return c.json({ error: { code: 'ZONE_NOT_FOUND', message: 'Delivery zone not found' } }, 404);
289
- }
290
- await prisma.deliveryZone.update({
291
- where: { id: zoneId },
292
- data: { deletedAt: new Date() },
293
- });
294
- return c.status(204);
295
- }
296
- catch (error) {
297
- return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to delete delivery zone' } }, 500);
298
- }
299
- });
300
- export default app;