@stacksjs/commerce 0.70.55 → 0.70.56

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 (297) hide show
  1. package/package.json +10 -7
  2. package/src/carts/destroy.ts +0 -54
  3. package/src/carts/fetch.ts +0 -20
  4. package/src/carts/index.ts +0 -13
  5. package/src/carts/store.ts +0 -75
  6. package/src/carts/update.ts +0 -78
  7. package/src/coupons/destroy.ts +0 -49
  8. package/src/coupons/fetch.ts +0 -510
  9. package/src/coupons/index.ts +0 -30
  10. package/src/coupons/store.ts +0 -46
  11. package/src/coupons/update.ts +0 -147
  12. package/src/customers/destroy.ts +0 -62
  13. package/src/customers/fetch.ts +0 -20
  14. package/src/customers/index.ts +0 -17
  15. package/src/customers/store.ts +0 -45
  16. package/src/customers/update.ts +0 -44
  17. package/src/devices/destroy.ts +0 -54
  18. package/src/devices/export.ts +0 -98
  19. package/src/devices/fetch.ts +0 -125
  20. package/src/devices/index.ts +0 -31
  21. package/src/devices/store.ts +0 -82
  22. package/src/devices/update.ts +0 -125
  23. package/src/errors/destroy.ts +0 -54
  24. package/src/errors/fetch.ts +0 -197
  25. package/src/errors/index.ts +0 -28
  26. package/src/errors/update.ts +0 -116
  27. package/src/gift-cards/destroy.ts +0 -87
  28. package/src/gift-cards/fetch.ts +0 -431
  29. package/src/gift-cards/index.ts +0 -26
  30. package/src/gift-cards/store.ts +0 -56
  31. package/src/gift-cards/update.ts +0 -102
  32. package/src/index.ts +0 -78
  33. package/src/orders/destroy.ts +0 -111
  34. package/src/orders/events.ts +0 -121
  35. package/src/orders/export.ts +0 -158
  36. package/src/orders/fetch.ts +0 -379
  37. package/src/orders/guards.ts +0 -261
  38. package/src/orders/index.ts +0 -91
  39. package/src/orders/place-order.ts +0 -274
  40. package/src/orders/store.ts +0 -51
  41. package/src/orders/totals.ts +0 -190
  42. package/src/orders/update.ts +0 -164
  43. package/src/orders/webhook.ts +0 -312
  44. package/src/payments/destroy.ts +0 -56
  45. package/src/payments/fetch.ts +0 -288
  46. package/src/payments/index.ts +0 -16
  47. package/src/payments/store.ts +0 -63
  48. package/src/payments/update.ts +0 -52
  49. package/src/product.ts +0 -0
  50. package/src/products/categories/destroy.ts +0 -103
  51. package/src/products/categories/fetch.ts +0 -285
  52. package/src/products/categories/index.ts +0 -36
  53. package/src/products/categories/store.ts +0 -87
  54. package/src/products/categories/update.ts +0 -251
  55. package/src/products/index.ts +0 -35
  56. package/src/products/items/destroy.ts +0 -54
  57. package/src/products/items/fetch.ts +0 -282
  58. package/src/products/items/index.ts +0 -26
  59. package/src/products/items/store.ts +0 -84
  60. package/src/products/items/update.ts +0 -324
  61. package/src/products/manufacturers/destroy.ts +0 -56
  62. package/src/products/manufacturers/fetch.ts +0 -117
  63. package/src/products/manufacturers/index.ts +0 -24
  64. package/src/products/manufacturers/store.ts +0 -82
  65. package/src/products/manufacturers/update.ts +0 -113
  66. package/src/products/reviews/destroy.ts +0 -56
  67. package/src/products/reviews/fetch.ts +0 -63
  68. package/src/products/reviews/index.ts +0 -25
  69. package/src/products/reviews/store.ts +0 -46
  70. package/src/products/reviews/update.ts +0 -82
  71. package/src/products/units/destroy.ts +0 -56
  72. package/src/products/units/fetch.ts +0 -20
  73. package/src/products/units/index.ts +0 -13
  74. package/src/products/units/store.ts +0 -162
  75. package/src/products/units/update.ts +0 -159
  76. package/src/products/variants/destroy.ts +0 -56
  77. package/src/products/variants/fetch.ts +0 -20
  78. package/src/products/variants/index.ts +0 -21
  79. package/src/products/variants/store.ts +0 -136
  80. package/src/products/variants/update.ts +0 -104
  81. package/src/receipts/destroy.ts +0 -54
  82. package/src/receipts/export.ts +0 -0
  83. package/src/receipts/fetch.ts +0 -222
  84. package/src/receipts/index.ts +0 -24
  85. package/src/receipts/printer.ts +0 -69
  86. package/src/receipts/store.ts +0 -69
  87. package/src/receipts/update.ts +0 -124
  88. package/src/shippings/delivery-routes/destroy.ts +0 -54
  89. package/src/shippings/delivery-routes/fetch.ts +0 -42
  90. package/src/shippings/delivery-routes/index.ts +0 -26
  91. package/src/shippings/delivery-routes/store.ts +0 -69
  92. package/src/shippings/delivery-routes/update.ts +0 -120
  93. package/src/shippings/digital-deliveries/destroy.ts +0 -111
  94. package/src/shippings/digital-deliveries/fetch.ts +0 -20
  95. package/src/shippings/digital-deliveries/index.ts +0 -26
  96. package/src/shippings/digital-deliveries/store.ts +0 -76
  97. package/src/shippings/digital-deliveries/update.ts +0 -129
  98. package/src/shippings/drivers/destroy.ts +0 -78
  99. package/src/shippings/drivers/fetch.ts +0 -20
  100. package/src/shippings/drivers/index.ts +0 -24
  101. package/src/shippings/drivers/store.ts +0 -69
  102. package/src/shippings/drivers/update.ts +0 -117
  103. package/src/shippings/index.ts +0 -39
  104. package/src/shippings/license-keys/destroy.ts +0 -111
  105. package/src/shippings/license-keys/fetch.ts +0 -20
  106. package/src/shippings/license-keys/index.ts +0 -26
  107. package/src/shippings/license-keys/store.ts +0 -77
  108. package/src/shippings/license-keys/update.ts +0 -117
  109. package/src/shippings/shipping-methods/destroy.ts +0 -111
  110. package/src/shippings/shipping-methods/fetch.ts +0 -62
  111. package/src/shippings/shipping-methods/index.ts +0 -28
  112. package/src/shippings/shipping-methods/store.ts +0 -123
  113. package/src/shippings/shipping-methods/update.ts +0 -120
  114. package/src/shippings/shipping-rates/destroy.ts +0 -102
  115. package/src/shippings/shipping-rates/fetch.ts +0 -320
  116. package/src/shippings/shipping-rates/index.ts +0 -36
  117. package/src/shippings/shipping-rates/store.ts +0 -102
  118. package/src/shippings/shipping-rates/update.ts +0 -139
  119. package/src/shippings/shipping-zones/destroy.ts +0 -111
  120. package/src/shippings/shipping-zones/fetch.ts +0 -96
  121. package/src/shippings/shipping-zones/index.ts +0 -26
  122. package/src/shippings/shipping-zones/store.ts +0 -74
  123. package/src/shippings/shipping-zones/update.ts +0 -156
  124. package/src/tax/destroy.ts +0 -54
  125. package/src/tax/fetch.ts +0 -20
  126. package/src/tax/index.ts +0 -24
  127. package/src/tax/store.ts +0 -69
  128. package/src/tax/update.ts +0 -119
  129. package/src/tests/coupons.test.ts +0 -90
  130. package/src/tests/customers.test.ts +0 -39
  131. package/src/tests/device.test.ts +0 -111
  132. package/src/tests/digitals.test.ts +0 -31
  133. package/src/tests/drivers.test.ts +0 -25
  134. package/src/tests/gift-cards.test.ts +0 -36
  135. package/src/tests/license.test.ts +0 -31
  136. package/src/tests/manufacturers.test.ts +0 -80
  137. package/src/tests/orders.test.ts +0 -25
  138. package/src/tests/payments.test.ts +0 -75
  139. package/src/tests/rates.test.ts +0 -367
  140. package/src/tests/receipts.test.ts +0 -287
  141. package/src/tests/restaurant.test.ts +0 -522
  142. package/src/tests/reviews.test.ts +0 -165
  143. package/src/tests/routes.test.ts +0 -51
  144. package/src/tests/setup.ts +0 -149
  145. package/src/tests/shipping.test.ts +0 -88
  146. package/src/tests/tax.test.ts +0 -25
  147. package/src/tests/units.test.ts +0 -110
  148. package/src/tests/variants.test.ts +0 -133
  149. package/src/tests/waitlist.test.ts +0 -303
  150. package/src/tests/zones.test.ts +0 -86
  151. package/src/types.ts +0 -312
  152. package/src/utils/typed-stats.ts +0 -67
  153. package/src/waitlists/index.ts +0 -19
  154. package/src/waitlists/products/destroy.ts +0 -65
  155. package/src/waitlists/products/export.ts +0 -113
  156. package/src/waitlists/products/fetch.ts +0 -362
  157. package/src/waitlists/products/index.ts +0 -33
  158. package/src/waitlists/products/store.ts +0 -112
  159. package/src/waitlists/products/update.ts +0 -125
  160. package/src/waitlists/restaurant/destroy.ts +0 -65
  161. package/src/waitlists/restaurant/export.ts +0 -107
  162. package/src/waitlists/restaurant/fetch.ts +0 -538
  163. package/src/waitlists/restaurant/index.ts +0 -43
  164. package/src/waitlists/restaurant/store.ts +0 -109
  165. package/src/waitlists/restaurant/update.ts +0 -198
  166. /package/dist/{src/coupons → coupons}/destroy.d.ts +0 -0
  167. /package/dist/{src/coupons → coupons}/fetch.d.ts +0 -0
  168. /package/dist/{src/coupons → coupons}/index.d.ts +0 -0
  169. /package/dist/{src/coupons → coupons}/store.d.ts +0 -0
  170. /package/dist/{src/coupons → coupons}/update.d.ts +0 -0
  171. /package/dist/{src/customers → customers}/destroy.d.ts +0 -0
  172. /package/dist/{src/customers → customers}/fetch.d.ts +0 -0
  173. /package/dist/{src/customers → customers}/index.d.ts +0 -0
  174. /package/dist/{src/customers → customers}/store.d.ts +0 -0
  175. /package/dist/{src/customers → customers}/update.d.ts +0 -0
  176. /package/dist/{src/devices → devices}/destroy.d.ts +0 -0
  177. /package/dist/{src/devices → devices}/export.d.ts +0 -0
  178. /package/dist/{src/devices → devices}/fetch.d.ts +0 -0
  179. /package/dist/{src/devices → devices}/index.d.ts +0 -0
  180. /package/dist/{src/devices → devices}/store.d.ts +0 -0
  181. /package/dist/{src/devices → devices}/update.d.ts +0 -0
  182. /package/dist/{src/errors → errors}/destroy.d.ts +0 -0
  183. /package/dist/{src/errors → errors}/fetch.d.ts +0 -0
  184. /package/dist/{src/errors → errors}/index.d.ts +0 -0
  185. /package/dist/{src/errors → errors}/update.d.ts +0 -0
  186. /package/dist/{src/gift-cards → gift-cards}/destroy.d.ts +0 -0
  187. /package/dist/{src/gift-cards → gift-cards}/fetch.d.ts +0 -0
  188. /package/dist/{src/gift-cards → gift-cards}/index.d.ts +0 -0
  189. /package/dist/{src/gift-cards → gift-cards}/store.d.ts +0 -0
  190. /package/dist/{src/gift-cards → gift-cards}/update.d.ts +0 -0
  191. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  192. /package/dist/{src/orders → orders}/destroy.d.ts +0 -0
  193. /package/dist/{src/orders → orders}/events.d.ts +0 -0
  194. /package/dist/{src/orders → orders}/export.d.ts +0 -0
  195. /package/dist/{src/orders → orders}/fetch.d.ts +0 -0
  196. /package/dist/{src/orders → orders}/guards.d.ts +0 -0
  197. /package/dist/{src/orders → orders}/index.d.ts +0 -0
  198. /package/dist/{src/orders → orders}/place-order.d.ts +0 -0
  199. /package/dist/{src/orders → orders}/store.d.ts +0 -0
  200. /package/dist/{src/orders → orders}/totals.d.ts +0 -0
  201. /package/dist/{src/orders → orders}/update.d.ts +0 -0
  202. /package/dist/{src/orders → orders}/webhook.d.ts +0 -0
  203. /package/dist/{src/payments → payments}/destroy.d.ts +0 -0
  204. /package/dist/{src/payments → payments}/fetch.d.ts +0 -0
  205. /package/dist/{src/payments → payments}/index.d.ts +0 -0
  206. /package/dist/{src/payments → payments}/store.d.ts +0 -0
  207. /package/dist/{src/payments → payments}/update.d.ts +0 -0
  208. /package/dist/{src/products → products}/categories/destroy.d.ts +0 -0
  209. /package/dist/{src/products → products}/categories/fetch.d.ts +0 -0
  210. /package/dist/{src/products → products}/categories/index.d.ts +0 -0
  211. /package/dist/{src/products → products}/categories/store.d.ts +0 -0
  212. /package/dist/{src/products → products}/categories/update.d.ts +0 -0
  213. /package/dist/{src/products → products}/index.d.ts +0 -0
  214. /package/dist/{src/products → products}/items/destroy.d.ts +0 -0
  215. /package/dist/{src/products → products}/items/fetch.d.ts +0 -0
  216. /package/dist/{src/products → products}/items/index.d.ts +0 -0
  217. /package/dist/{src/products → products}/items/store.d.ts +0 -0
  218. /package/dist/{src/products → products}/items/update.d.ts +0 -0
  219. /package/dist/{src/products → products}/manufacturers/destroy.d.ts +0 -0
  220. /package/dist/{src/products → products}/manufacturers/fetch.d.ts +0 -0
  221. /package/dist/{src/products → products}/manufacturers/index.d.ts +0 -0
  222. /package/dist/{src/products → products}/manufacturers/store.d.ts +0 -0
  223. /package/dist/{src/products → products}/manufacturers/update.d.ts +0 -0
  224. /package/dist/{src/products → products}/reviews/destroy.d.ts +0 -0
  225. /package/dist/{src/products → products}/reviews/fetch.d.ts +0 -0
  226. /package/dist/{src/products → products}/reviews/index.d.ts +0 -0
  227. /package/dist/{src/products → products}/reviews/store.d.ts +0 -0
  228. /package/dist/{src/products → products}/reviews/update.d.ts +0 -0
  229. /package/dist/{src/products → products}/units/destroy.d.ts +0 -0
  230. /package/dist/{src/products → products}/units/fetch.d.ts +0 -0
  231. /package/dist/{src/products → products}/units/index.d.ts +0 -0
  232. /package/dist/{src/products → products}/units/store.d.ts +0 -0
  233. /package/dist/{src/products → products}/units/update.d.ts +0 -0
  234. /package/dist/{src/products → products}/variants/destroy.d.ts +0 -0
  235. /package/dist/{src/products → products}/variants/fetch.d.ts +0 -0
  236. /package/dist/{src/products → products}/variants/index.d.ts +0 -0
  237. /package/dist/{src/products → products}/variants/store.d.ts +0 -0
  238. /package/dist/{src/products → products}/variants/update.d.ts +0 -0
  239. /package/dist/{src/receipts → receipts}/destroy.d.ts +0 -0
  240. /package/dist/{src/receipts → receipts}/fetch.d.ts +0 -0
  241. /package/dist/{src/receipts → receipts}/index.d.ts +0 -0
  242. /package/dist/{src/receipts → receipts}/store.d.ts +0 -0
  243. /package/dist/{src/receipts → receipts}/update.d.ts +0 -0
  244. /package/dist/{src/shippings → shippings}/delivery-routes/destroy.d.ts +0 -0
  245. /package/dist/{src/shippings → shippings}/delivery-routes/fetch.d.ts +0 -0
  246. /package/dist/{src/shippings → shippings}/delivery-routes/index.d.ts +0 -0
  247. /package/dist/{src/shippings → shippings}/delivery-routes/store.d.ts +0 -0
  248. /package/dist/{src/shippings → shippings}/delivery-routes/update.d.ts +0 -0
  249. /package/dist/{src/shippings → shippings}/digital-deliveries/destroy.d.ts +0 -0
  250. /package/dist/{src/shippings → shippings}/digital-deliveries/fetch.d.ts +0 -0
  251. /package/dist/{src/shippings → shippings}/digital-deliveries/index.d.ts +0 -0
  252. /package/dist/{src/shippings → shippings}/digital-deliveries/store.d.ts +0 -0
  253. /package/dist/{src/shippings → shippings}/digital-deliveries/update.d.ts +0 -0
  254. /package/dist/{src/shippings → shippings}/drivers/destroy.d.ts +0 -0
  255. /package/dist/{src/shippings → shippings}/drivers/fetch.d.ts +0 -0
  256. /package/dist/{src/shippings → shippings}/drivers/index.d.ts +0 -0
  257. /package/dist/{src/shippings → shippings}/drivers/store.d.ts +0 -0
  258. /package/dist/{src/shippings → shippings}/drivers/update.d.ts +0 -0
  259. /package/dist/{src/shippings → shippings}/index.d.ts +0 -0
  260. /package/dist/{src/shippings → shippings}/license-keys/destroy.d.ts +0 -0
  261. /package/dist/{src/shippings → shippings}/license-keys/fetch.d.ts +0 -0
  262. /package/dist/{src/shippings → shippings}/license-keys/index.d.ts +0 -0
  263. /package/dist/{src/shippings → shippings}/license-keys/store.d.ts +0 -0
  264. /package/dist/{src/shippings → shippings}/license-keys/update.d.ts +0 -0
  265. /package/dist/{src/shippings → shippings}/shipping-methods/destroy.d.ts +0 -0
  266. /package/dist/{src/shippings → shippings}/shipping-methods/fetch.d.ts +0 -0
  267. /package/dist/{src/shippings → shippings}/shipping-methods/index.d.ts +0 -0
  268. /package/dist/{src/shippings → shippings}/shipping-methods/store.d.ts +0 -0
  269. /package/dist/{src/shippings → shippings}/shipping-methods/update.d.ts +0 -0
  270. /package/dist/{src/shippings → shippings}/shipping-rates/destroy.d.ts +0 -0
  271. /package/dist/{src/shippings → shippings}/shipping-rates/fetch.d.ts +0 -0
  272. /package/dist/{src/shippings → shippings}/shipping-rates/index.d.ts +0 -0
  273. /package/dist/{src/shippings → shippings}/shipping-rates/store.d.ts +0 -0
  274. /package/dist/{src/shippings → shippings}/shipping-rates/update.d.ts +0 -0
  275. /package/dist/{src/shippings → shippings}/shipping-zones/destroy.d.ts +0 -0
  276. /package/dist/{src/shippings → shippings}/shipping-zones/fetch.d.ts +0 -0
  277. /package/dist/{src/shippings → shippings}/shipping-zones/index.d.ts +0 -0
  278. /package/dist/{src/shippings → shippings}/shipping-zones/store.d.ts +0 -0
  279. /package/dist/{src/shippings → shippings}/shipping-zones/update.d.ts +0 -0
  280. /package/dist/{src/tax → tax}/destroy.d.ts +0 -0
  281. /package/dist/{src/tax → tax}/fetch.d.ts +0 -0
  282. /package/dist/{src/tax → tax}/index.d.ts +0 -0
  283. /package/dist/{src/tax → tax}/store.d.ts +0 -0
  284. /package/dist/{src/tax → tax}/update.d.ts +0 -0
  285. /package/dist/{src/types.d.ts → types.d.ts} +0 -0
  286. /package/dist/{src/utils → utils}/typed-stats.d.ts +0 -0
  287. /package/dist/{src/waitlists → waitlists}/index.d.ts +0 -0
  288. /package/dist/{src/waitlists → waitlists}/products/destroy.d.ts +0 -0
  289. /package/dist/{src/waitlists → waitlists}/products/fetch.d.ts +0 -0
  290. /package/dist/{src/waitlists → waitlists}/products/index.d.ts +0 -0
  291. /package/dist/{src/waitlists → waitlists}/products/store.d.ts +0 -0
  292. /package/dist/{src/waitlists → waitlists}/products/update.d.ts +0 -0
  293. /package/dist/{src/waitlists → waitlists}/restaurant/destroy.d.ts +0 -0
  294. /package/dist/{src/waitlists → waitlists}/restaurant/fetch.d.ts +0 -0
  295. /package/dist/{src/waitlists → waitlists}/restaurant/index.d.ts +0 -0
  296. /package/dist/{src/waitlists → waitlists}/restaurant/store.d.ts +0 -0
  297. /package/dist/{src/waitlists → waitlists}/restaurant/update.d.ts +0 -0
@@ -1,159 +0,0 @@
1
- import { db } from '@stacksjs/database'
2
- import { formatDate } from '@stacksjs/orm'
3
- type ProductUnitJsonResponse = ModelRow<typeof ProductUnit>
4
- type ProductUnitUpdate = UpdateModelData<typeof ProductUnit>
5
-
6
- /**
7
- * Update a product unit
8
- *
9
- * @param id The ID of the product unit
10
- * @param data The product unit data to update
11
- * @returns The updated product unit record
12
- */
13
- export async function update(id: number, data: ProductUnitUpdate): Promise<ProductUnitJsonResponse> {
14
- try {
15
- if (!id)
16
- throw new Error('Product unit ID is required for update')
17
-
18
- const result = await db
19
- .updateTable('product_units')
20
- .set({
21
- ...data,
22
- updated_at: formatDate(new Date()),
23
- })
24
- .where('id', '=', id)
25
- .returningAll()
26
- .executeTakeFirst()
27
-
28
- if (!result)
29
- throw new Error('Failed to update product unit')
30
-
31
- // If this unit is set as default, update all other units of the same type
32
- const d = data as Record<string, unknown>
33
- if (d.is_default === true && data.type) {
34
- await db
35
- .updateTable('product_units')
36
- .set({ is_default: false })
37
- .where('type', '=', data.type)
38
- .where('id', '!=', id)
39
- .execute()
40
- }
41
-
42
- return result as ProductUnitJsonResponse
43
- }
44
- catch (error) {
45
- if (error instanceof Error) {
46
- throw new TypeError(`Failed to update product unit: ${error.message}`)
47
- }
48
-
49
- throw error
50
- }
51
- }
52
-
53
- /**
54
- * Update multiple product units at once
55
- *
56
- * @param data Array of product unit updates
57
- * @returns Number of product units updated
58
- */
59
- export async function bulkUpdate(data: ProductUnitUpdate[]): Promise<number> {
60
- if (!data.length)
61
- return 0
62
-
63
- let updatedCount = 0
64
-
65
- try {
66
- for (const unit of data) {
67
- const unitRecord = unit as Record<string, unknown>
68
- if (!unitRecord.id)
69
- continue
70
-
71
- // Support both flat format and { id, data: { ... } } format
72
- const updateFields = unitRecord.data && typeof unitRecord.data === 'object'
73
- ? unitRecord.data as Record<string, unknown>
74
- : { ...unitRecord }
75
- delete (updateFields as Record<string, unknown>).id
76
-
77
- const result = await db
78
- .updateTable('product_units')
79
- .set({
80
- ...updateFields,
81
- updated_at: formatDate(new Date()),
82
- })
83
- .where('id', '=', unitRecord.id)
84
- .executeTakeFirst()
85
-
86
- // If this unit is set as default, update all other units of the same type
87
- const fields = updateFields as Record<string, unknown>
88
- if (fields.is_default === true && fields.type) {
89
- await db
90
- .updateTable('product_units')
91
- .set({ is_default: false })
92
- .where('type', '=', fields.type as string)
93
- .where('id', '!=', unitRecord.id)
94
- .execute()
95
- }
96
-
97
- if (Number(result.numUpdatedRows) > 0)
98
- updatedCount++
99
- }
100
-
101
- return updatedCount
102
- }
103
- catch (error) {
104
- if (error instanceof Error) {
105
- throw new TypeError(`Failed to update product units in bulk: ${error.message}`)
106
- }
107
-
108
- throw error
109
- }
110
- }
111
-
112
- /**
113
- * Update the default status of a product unit
114
- *
115
- * @param id The ID of the product unit
116
- * @param isDefault The new default status value
117
- * @returns True if the status was updated successfully
118
- */
119
- export async function updateDefaultStatus(id: number, isDefault: boolean): Promise<boolean> {
120
- try {
121
- // First get the unit type to update other units if needed
122
- const unit = await db
123
- .selectFrom('product_units')
124
- .select('type' as any)
125
- .where('id', '=', id)
126
- .executeTakeFirst() as { type: string } | undefined
127
-
128
- if (!unit)
129
- return false
130
-
131
- const result = await db
132
- .updateTable('product_units')
133
- .set({
134
- is_default: isDefault,
135
- updated_at: formatDate(new Date()),
136
- })
137
- .where('id', '=', id)
138
- .executeTakeFirst()
139
-
140
- // If setting this unit as default, update all other units of the same type
141
- if (isDefault && unit.type) {
142
- await db
143
- .updateTable('product_units')
144
- .set({ is_default: false })
145
- .where('type', '=', unit.type)
146
- .where('id', '!=', id)
147
- .execute()
148
- }
149
-
150
- return Number(result.numUpdatedRows) > 0
151
- }
152
- catch (error) {
153
- if (error instanceof Error) {
154
- throw new TypeError(`Failed to update product unit default status: ${error.message}`)
155
- }
156
-
157
- throw error
158
- }
159
- }
@@ -1,56 +0,0 @@
1
- import { db } from '@stacksjs/database'
2
-
3
- /**
4
- * Delete a product variant by ID
5
- *
6
- * @param id The ID of the product variant to delete
7
- * @returns True if the product variant was deleted, false otherwise
8
- */
9
- export async function destroy(id: number): Promise<boolean> {
10
- try {
11
- // Perform the delete operation
12
- const result = await db
13
- .deleteFrom('product_variants')
14
- .where('id', '=', id)
15
- .executeTakeFirst()
16
-
17
- // Return true if any row was affected (deleted)
18
- return Number(result.numDeletedRows) > 0
19
- }
20
- catch (error) {
21
- if (error instanceof Error) {
22
- throw new TypeError(`Failed to delete product variant: ${error.message}`)
23
- }
24
-
25
- throw error
26
- }
27
- }
28
-
29
- /**
30
- * Delete multiple product variants by ID
31
- *
32
- * @param ids Array of product variant IDs to delete
33
- * @returns Number of product variants deleted
34
- */
35
- export async function bulkDestroy(ids: number[]): Promise<number> {
36
- if (!ids.length)
37
- return 0
38
-
39
- try {
40
- // Perform the delete operation
41
- const result = await db
42
- .deleteFrom('product_variants')
43
- .where('id', 'in', ids)
44
- .executeTakeFirst()
45
-
46
- // Return the number of deleted rows
47
- return Number(result.numDeletedRows)
48
- }
49
- catch (error) {
50
- if (error instanceof Error) {
51
- throw new TypeError(`Failed to delete product variants: ${error.message}`)
52
- }
53
-
54
- throw error
55
- }
56
- }
@@ -1,20 +0,0 @@
1
- type ProductVariantJsonResponse = ModelRow<typeof ProductVariant>
2
- import { db } from '@stacksjs/database'
3
-
4
- /**
5
- * Fetch a product variant by ID
6
- */
7
- export async function fetchById(id: number): Promise<ProductVariantJsonResponse | undefined> {
8
- return await db
9
- .selectFrom('product_variants')
10
- .where('id', '=', id)
11
- .selectAll()
12
- .executeTakeFirst() as ProductVariantJsonResponse | undefined
13
- }
14
-
15
- /**
16
- * Fetch all product variants
17
- */
18
- export async function fetchAll(): Promise<ProductVariantJsonResponse[]> {
19
- return await db.selectFrom('product_variants').selectAll().execute() as ProductVariantJsonResponse[]
20
- }
@@ -1,21 +0,0 @@
1
- export {
2
- bulkDestroy,
3
- destroy,
4
- } from './destroy'
5
-
6
- export {
7
- fetchAll,
8
- fetchById,
9
- } from './fetch'
10
-
11
- export {
12
- bulkStore,
13
- formatVariantOptions,
14
- generateVariantCombinations,
15
- store,
16
- } from './store'
17
-
18
- export {
19
- bulkUpdate,
20
- update,
21
- } from './update'
@@ -1,136 +0,0 @@
1
- type ProductVariantJsonResponse = ModelRow<typeof ProductVariant>
2
- type NewProductVariant = NewModelData<typeof ProductVariant>
3
- import { randomUUIDv7 } from 'bun'
4
- import { db } from '@stacksjs/database'
5
-
6
- /**
7
- * Create a new product variant
8
- *
9
- * @param data The product variant data to store
10
- * @returns The newly created product variant record
11
- */
12
- export async function store(data: NewProductVariant): Promise<ProductVariantJsonResponse> {
13
- try {
14
- const variantData = {
15
- ...data,
16
- uuid: randomUUIDv7(),
17
- }
18
-
19
- const result = await db
20
- .insertInto('product_variants')
21
- .values(variantData)
22
- .returningAll()
23
- .executeTakeFirst()
24
-
25
- if (!result)
26
- throw new Error('Failed to create product variant')
27
-
28
- return result as ProductVariantJsonResponse
29
- }
30
- catch (error) {
31
- if (error instanceof Error) {
32
- throw new TypeError(`Failed to create product variant: ${error.message}`)
33
- }
34
-
35
- throw error
36
- }
37
- }
38
-
39
- /**
40
- * Create multiple product variants at once
41
- *
42
- * @param data Array of product variant data to store
43
- * @returns Number of product variants created
44
- */
45
- export async function bulkStore(data: NewProductVariant[]): Promise<number> {
46
- if (!data.length)
47
- return 0
48
-
49
- let createdCount = 0
50
-
51
- try {
52
- for (const variant of data) {
53
- const variantData = {
54
- ...variant,
55
- uuid: randomUUIDv7(),
56
- }
57
-
58
- await db
59
- .insertInto('product_variants')
60
- .values(variantData)
61
- .execute()
62
-
63
- createdCount++
64
- }
65
-
66
- return createdCount
67
- }
68
- catch (error) {
69
- if (error instanceof Error) {
70
- throw new TypeError(`Failed to create product variants in bulk: ${error.message}`)
71
- }
72
-
73
- throw error
74
- }
75
- }
76
-
77
- /**
78
- * Generate product variant options from raw input
79
- *
80
- * @param rawOptions String array of options
81
- * @returns Formatted JSON string of options
82
- */
83
- export function formatVariantOptions(rawOptions: string[]): string {
84
- if (!rawOptions || !rawOptions.length)
85
- return JSON.stringify([])
86
-
87
- // Clean and normalize the options
88
- const cleanedOptions = rawOptions.map((option: any) => option.trim()).filter(Boolean)
89
-
90
- return JSON.stringify(cleanedOptions)
91
- }
92
-
93
- /**
94
- * Create a set of common variant combinations from different option types
95
- *
96
- * @param optionSets Object containing option types and their values
97
- * @returns Array of variant combinations
98
- *
99
- * @example
100
- * // Generate combinations for a t-shirt product
101
- * const options = {
102
- * size: ['S', 'M', 'L'],
103
- * color: ['Red', 'Blue']
104
- * }
105
- * // Returns: [
106
- * // { size: 'S', color: 'Red' },
107
- * // { size: 'S', color: 'Blue' },
108
- * // { size: 'M', color: 'Red' },
109
- * // ...
110
- * // ]
111
- */
112
- export function generateVariantCombinations(optionSets: Record<string, string[]>): Record<string, string>[] {
113
- const keys = Object.keys(optionSets)
114
-
115
- if (!keys.length)
116
- return []
117
-
118
- // Helper function to create combinations recursively
119
- function createCombinations(currentIndex: number, currentCombination: Record<string, string>): Record<string, string>[] {
120
- if (currentIndex === keys.length)
121
- return [currentCombination]
122
-
123
- const currentKey = keys[currentIndex]
124
- const currentOptions = optionSets[currentKey]
125
- const combinations: Record<string, string>[] = []
126
-
127
- for (const option of currentOptions) {
128
- const newCombination = { ...currentCombination, [currentKey]: option }
129
- combinations.push(...createCombinations(currentIndex + 1, newCombination))
130
- }
131
-
132
- return combinations
133
- }
134
-
135
- return createCombinations(0, {})
136
- }
@@ -1,104 +0,0 @@
1
- import { db } from '@stacksjs/database'
2
- import { formatDate } from '@stacksjs/orm'
3
- type ProductVariantJsonResponse = ModelRow<typeof ProductVariant>
4
- type ProductVariantUpdate = UpdateModelData<typeof ProductVariant>
5
-
6
- /**
7
- * Update a product variant
8
- *
9
- * @param id The ID of the product variant to update
10
- * @param data The product variant data to update
11
- * @returns The updated product variant record
12
- */
13
- export async function update(id: number, data: Omit<ProductVariantUpdate, 'id'>): Promise<ProductVariantJsonResponse> {
14
- try {
15
- const result = await db
16
- .updateTable('product_variants')
17
- .set({
18
- ...data,
19
- updated_at: formatDate(new Date()),
20
- })
21
- .where('id', '=', id)
22
- .returningAll()
23
- .executeTakeFirst()
24
-
25
- if (!result)
26
- throw new Error('Failed to update product variant')
27
-
28
- return result as ProductVariantJsonResponse
29
- }
30
- catch (error) {
31
- if (error instanceof Error)
32
- throw new TypeError(`Failed to update product variant: ${error.message}`)
33
-
34
- throw error
35
- }
36
- }
37
-
38
- /**
39
- * Update multiple product variants at once
40
- *
41
- * @param data Array of objects containing variant ID and update data
42
- * @returns Number of product variants updated
43
- */
44
- export async function bulkUpdate(data: ProductVariantUpdate[]): Promise<number> {
45
- if (!data.length)
46
- return 0
47
-
48
- let updatedCount = 0
49
-
50
- try {
51
- for (const variant of data) {
52
- if (!(variant as Record<string, unknown>).id)
53
- continue
54
-
55
- const result = await db
56
- .updateTable('product_variants')
57
- .set({
58
- ...variant,
59
- updated_at: formatDate(new Date()),
60
- })
61
- .where('id', '=', (variant as Record<string, unknown>).id)
62
- .executeTakeFirst()
63
-
64
- if (Number(result.numUpdatedRows) > 0)
65
- updatedCount++
66
- }
67
-
68
- return updatedCount
69
- }
70
- catch (error) {
71
- if (error instanceof Error)
72
- throw new TypeError(`Failed to update product variants in bulk: ${error.message}`)
73
-
74
- throw error
75
- }
76
- }
77
-
78
- /**
79
- * Update the status of a product variant
80
- *
81
- * @param id The ID of the product variant
82
- * @param status The new status value
83
- * @returns True if the status was updated successfully
84
- */
85
- export async function updateStatus(id: number, status: string): Promise<boolean> {
86
- try {
87
- const result = await db
88
- .updateTable('product_variants')
89
- .set({
90
- status,
91
- updated_at: formatDate(new Date()),
92
- })
93
- .where('id', '=', id)
94
- .executeTakeFirst()
95
-
96
- return Number(result.numUpdatedRows) > 0
97
- }
98
- catch (error) {
99
- if (error instanceof Error)
100
- throw new TypeError(`Failed to update product variant status: ${error.message}`)
101
-
102
- throw error
103
- }
104
- }
@@ -1,54 +0,0 @@
1
- import { db } from '@stacksjs/database'
2
-
3
- /**
4
- * Delete a print log by ID
5
- *
6
- * @param id The ID of the print log to delete
7
- * @returns True if the print log was deleted, false otherwise
8
- */
9
- export async function destroy(id: number): Promise<boolean> {
10
- try {
11
- const result = await db
12
- .deleteFrom('receipts')
13
- .where('id', '=', id)
14
- .executeTakeFirst()
15
-
16
- return Number(result.numDeletedRows) > 0
17
- }
18
- catch (error) {
19
- if (error instanceof Error) {
20
- throw new TypeError(`Failed to delete print log: ${error.message}`)
21
- }
22
-
23
- throw error
24
- }
25
- }
26
-
27
- /**
28
- * Delete multiple print logs by ID
29
- *
30
- * @param ids Array of print log IDs to delete
31
- * @returns Number of print logs deleted
32
- */
33
- export async function bulkDestroy(ids: number[]): Promise<number> {
34
- if (!ids.length)
35
- return 0
36
-
37
- try {
38
- // Perform the delete operation
39
- const result = await db
40
- .deleteFrom('receipts')
41
- .where('id', 'in', ids)
42
- .executeTakeFirst()
43
-
44
- // Return the number of deleted rows
45
- return Number(result.numDeletedRows)
46
- }
47
- catch (error) {
48
- if (error instanceof Error) {
49
- throw new TypeError(`Failed to delete receipts: ${error.message}`)
50
- }
51
-
52
- throw error
53
- }
54
- }
File without changes