@coursebuilder/adapter-drizzle 2.1.0 → 3.0.0-canary.0.0c9beb2ae

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 (307) hide show
  1. package/dist/{chunk-KIQLUFJX.js → chunk-2GW3BJE2.js} +2 -2
  2. package/dist/{chunk-M3WM5Q7W.js → chunk-33ZN7FN7.js} +2 -2
  3. package/dist/chunk-4VZJQAPV.js +74 -0
  4. package/dist/chunk-5FLS4ZBX.js +109 -0
  5. package/dist/chunk-5YR5M22S.js +147 -0
  6. package/dist/chunk-6XQ6C3IX.js +18 -0
  7. package/dist/chunk-AIDM2CH6.js +146 -0
  8. package/dist/chunk-ALTODDUX.js +173 -0
  9. package/dist/chunk-AZY2VRAE.js +63 -0
  10. package/dist/chunk-BS7T27VL.js +239 -0
  11. package/dist/chunk-CN3FCRLR.js +55 -0
  12. package/dist/chunk-EAXC4CQD.js +245 -0
  13. package/dist/chunk-EDDG2YFS.js +249 -0
  14. package/dist/chunk-EDKWCMA7.js +210 -0
  15. package/dist/{chunk-CFSRMUNC.js → chunk-EDM6DKA5.js} +2 -2
  16. package/dist/{chunk-EZEQQJNH.js → chunk-EIQBTF5J.js} +2 -2
  17. package/dist/chunk-FYT7RTVW.js +248 -0
  18. package/dist/{chunk-DUFH5L2F.js → chunk-INZTF6QV.js} +2 -2
  19. package/dist/{chunk-3AF6MZQ7.js → chunk-JVHX4JHA.js} +2 -2
  20. package/dist/chunk-LWEKWDLC.js +300 -0
  21. package/dist/chunk-OJPEBGGE.js +139 -0
  22. package/dist/chunk-QKOSV34V.js +16268 -0
  23. package/dist/chunk-QO3QE3LE.js +330 -0
  24. package/dist/chunk-QQKNNFFB.js +399 -0
  25. package/dist/chunk-RBHCV3UW.js +20 -0
  26. package/dist/chunk-TNH2C27F.js +252 -0
  27. package/dist/chunk-TNWNW666.js +133 -0
  28. package/dist/chunk-VBEXYQ6L.js +156 -0
  29. package/dist/chunk-W3ILNMLD.js +265 -0
  30. package/dist/chunk-WJ2ZUXL3.js +71 -0
  31. package/dist/{chunk-4SWTV7Z3.js → chunk-WUMDFFN3.js} +2 -2
  32. package/dist/{chunk-FJGNLVE4.js → chunk-X7DRYXB7.js} +2 -2
  33. package/dist/{chunk-PNPTKVJ4.js → chunk-XUBZKYH6.js} +24 -15
  34. package/dist/{chunk-MYG6PCE3.js → chunk-ZY4AFKUQ.js} +2 -2
  35. package/dist/index.d.ts +5 -11
  36. package/dist/index.js +42 -19
  37. package/dist/lib/mysql/cms-resource-actions.cjs +15932 -4129
  38. package/dist/lib/mysql/cms-resource-actions.cjs.map +1 -1
  39. package/dist/lib/mysql/cms-resource-actions.d.cts +10 -25
  40. package/dist/lib/mysql/cms-resource-actions.d.ts +10 -25
  41. package/dist/lib/mysql/cms-resource-actions.js +2 -1
  42. package/dist/lib/mysql/context.cjs +3380 -0
  43. package/dist/lib/mysql/context.cjs.map +1 -0
  44. package/dist/lib/mysql/context.d.cts +15 -0
  45. package/dist/lib/mysql/context.d.ts +15 -0
  46. package/dist/lib/mysql/context.js +34 -0
  47. package/dist/lib/mysql/context.js.map +1 -0
  48. package/dist/lib/mysql/index.cjs +21648 -15013
  49. package/dist/lib/mysql/index.cjs.map +1 -1
  50. package/dist/lib/mysql/index.d.cts +24 -14300
  51. package/dist/lib/mysql/index.d.ts +24 -14300
  52. package/dist/lib/mysql/index.js +47 -23
  53. package/dist/lib/mysql/ports/auth-storage.cjs +84 -0
  54. package/dist/lib/mysql/ports/auth-storage.cjs.map +1 -0
  55. package/dist/lib/mysql/ports/auth-storage.d.cts +22 -0
  56. package/dist/lib/mysql/ports/auth-storage.d.ts +22 -0
  57. package/dist/lib/mysql/ports/auth-storage.js +8 -0
  58. package/dist/lib/mysql/ports/auth-storage.js.map +1 -0
  59. package/dist/lib/mysql/ports/catalog.cjs +16688 -0
  60. package/dist/lib/mysql/ports/catalog.cjs.map +1 -0
  61. package/dist/lib/mysql/ports/catalog.d.cts +24 -0
  62. package/dist/lib/mysql/ports/catalog.d.ts +24 -0
  63. package/dist/lib/mysql/ports/catalog.js +9 -0
  64. package/dist/lib/mysql/ports/catalog.js.map +1 -0
  65. package/dist/lib/mysql/ports/content-resource.cjs +321 -0
  66. package/dist/lib/mysql/ports/content-resource.cjs.map +1 -0
  67. package/dist/lib/mysql/ports/content-resource.d.cts +23 -0
  68. package/dist/lib/mysql/ports/content-resource.d.ts +23 -0
  69. package/dist/lib/mysql/ports/content-resource.js +8 -0
  70. package/dist/lib/mysql/ports/content-resource.js.map +1 -0
  71. package/dist/lib/mysql/ports/coupon.cjs +16524 -0
  72. package/dist/lib/mysql/ports/coupon.cjs.map +1 -0
  73. package/dist/lib/mysql/ports/coupon.d.cts +22 -0
  74. package/dist/lib/mysql/ports/coupon.d.ts +22 -0
  75. package/dist/lib/mysql/ports/coupon.js +9 -0
  76. package/dist/lib/mysql/ports/coupon.js.map +1 -0
  77. package/dist/lib/mysql/ports/entitlement.cjs +16350 -0
  78. package/dist/lib/mysql/ports/entitlement.cjs.map +1 -0
  79. package/dist/lib/mysql/ports/entitlement.d.cts +22 -0
  80. package/dist/lib/mysql/ports/entitlement.d.ts +22 -0
  81. package/dist/lib/mysql/ports/entitlement.js +9 -0
  82. package/dist/lib/mysql/ports/entitlement.js.map +1 -0
  83. package/dist/lib/mysql/ports/identity.cjs +154 -0
  84. package/dist/lib/mysql/ports/identity.cjs.map +1 -0
  85. package/dist/lib/mysql/ports/identity.d.cts +22 -0
  86. package/dist/lib/mysql/ports/identity.d.ts +22 -0
  87. package/dist/lib/mysql/ports/identity.js +8 -0
  88. package/dist/lib/mysql/ports/identity.js.map +1 -0
  89. package/dist/lib/mysql/ports/merchant.cjs +194 -0
  90. package/dist/lib/mysql/ports/merchant.cjs.map +1 -0
  91. package/dist/lib/mysql/ports/merchant.d.cts +22 -0
  92. package/dist/lib/mysql/ports/merchant.d.ts +22 -0
  93. package/dist/lib/mysql/ports/merchant.js +8 -0
  94. package/dist/lib/mysql/ports/merchant.js.map +1 -0
  95. package/dist/lib/mysql/ports/organization.cjs +16426 -0
  96. package/dist/lib/mysql/ports/organization.cjs.map +1 -0
  97. package/dist/lib/mysql/ports/organization.d.cts +22 -0
  98. package/dist/lib/mysql/ports/organization.d.ts +22 -0
  99. package/dist/lib/mysql/ports/organization.js +9 -0
  100. package/dist/lib/mysql/ports/organization.js.map +1 -0
  101. package/dist/lib/mysql/ports/progress.cjs +16544 -0
  102. package/dist/lib/mysql/ports/progress.cjs.map +1 -0
  103. package/dist/lib/mysql/ports/progress.d.cts +22 -0
  104. package/dist/lib/mysql/ports/progress.d.ts +22 -0
  105. package/dist/lib/mysql/ports/progress.js +9 -0
  106. package/dist/lib/mysql/ports/progress.js.map +1 -0
  107. package/dist/lib/mysql/ports/purchase.cjs +16609 -0
  108. package/dist/lib/mysql/ports/purchase.cjs.map +1 -0
  109. package/dist/lib/mysql/ports/purchase.d.cts +23 -0
  110. package/dist/lib/mysql/ports/purchase.d.ts +23 -0
  111. package/dist/lib/mysql/ports/purchase.js +9 -0
  112. package/dist/lib/mysql/ports/purchase.js.map +1 -0
  113. package/dist/lib/mysql/ports/subscription.cjs +76 -0
  114. package/dist/lib/mysql/ports/subscription.cjs.map +1 -0
  115. package/dist/lib/mysql/ports/subscription.d.cts +22 -0
  116. package/dist/lib/mysql/ports/subscription.d.ts +22 -0
  117. package/dist/lib/mysql/ports/subscription.js +8 -0
  118. package/dist/lib/mysql/ports/subscription.js.map +1 -0
  119. package/dist/lib/mysql/schema.cjs +3373 -0
  120. package/dist/lib/mysql/schema.cjs.map +1 -0
  121. package/dist/lib/mysql/schema.d.cts +14385 -0
  122. package/dist/lib/mysql/schema.d.ts +14385 -0
  123. package/dist/lib/mysql/schema.js +35 -0
  124. package/dist/lib/mysql/schema.js.map +1 -0
  125. package/dist/lib/mysql/schemas/auth/accounts.cjs.map +1 -1
  126. package/dist/lib/mysql/schemas/auth/accounts.js +6 -6
  127. package/dist/lib/mysql/schemas/auth/device-access-token.cjs.map +1 -1
  128. package/dist/lib/mysql/schemas/auth/device-access-token.js +7 -7
  129. package/dist/lib/mysql/schemas/auth/device-verification.cjs.map +1 -1
  130. package/dist/lib/mysql/schemas/auth/device-verification.js +7 -7
  131. package/dist/lib/mysql/schemas/auth/personal-access-token.cjs.map +1 -1
  132. package/dist/lib/mysql/schemas/auth/personal-access-token.js +7 -7
  133. package/dist/lib/mysql/schemas/auth/profiles.cjs.map +1 -1
  134. package/dist/lib/mysql/schemas/auth/profiles.js +6 -6
  135. package/dist/lib/mysql/schemas/auth/role-permissions.cjs.map +1 -1
  136. package/dist/lib/mysql/schemas/auth/role-permissions.js +7 -7
  137. package/dist/lib/mysql/schemas/auth/roles.cjs.map +1 -1
  138. package/dist/lib/mysql/schemas/auth/roles.js +6 -6
  139. package/dist/lib/mysql/schemas/auth/sessions.cjs.map +1 -1
  140. package/dist/lib/mysql/schemas/auth/sessions.js +7 -7
  141. package/dist/lib/mysql/schemas/auth/user-permissions.cjs.map +1 -1
  142. package/dist/lib/mysql/schemas/auth/user-permissions.js +6 -6
  143. package/dist/lib/mysql/schemas/auth/user-prefs.cjs.map +1 -1
  144. package/dist/lib/mysql/schemas/auth/user-prefs.js +6 -6
  145. package/dist/lib/mysql/schemas/auth/user-roles.cjs.map +1 -1
  146. package/dist/lib/mysql/schemas/auth/user-roles.js +6 -6
  147. package/dist/lib/mysql/schemas/auth/users.cjs +5 -1
  148. package/dist/lib/mysql/schemas/auth/users.cjs.map +1 -1
  149. package/dist/lib/mysql/schemas/auth/users.js +6 -6
  150. package/dist/lib/mysql/schemas/commerce/coupon.cjs.map +1 -1
  151. package/dist/lib/mysql/schemas/commerce/coupon.js +6 -6
  152. package/dist/lib/mysql/schemas/commerce/merchant-charge.cjs.map +1 -1
  153. package/dist/lib/mysql/schemas/commerce/merchant-charge.js +6 -6
  154. package/dist/lib/mysql/schemas/commerce/merchant-subscription.cjs.map +1 -1
  155. package/dist/lib/mysql/schemas/commerce/merchant-subscription.js +6 -6
  156. package/dist/lib/mysql/schemas/commerce/price.cjs.map +1 -1
  157. package/dist/lib/mysql/schemas/commerce/price.js +6 -6
  158. package/dist/lib/mysql/schemas/commerce/product.cjs.map +1 -1
  159. package/dist/lib/mysql/schemas/commerce/product.js +6 -6
  160. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.cjs.map +1 -1
  161. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.js +7 -7
  162. package/dist/lib/mysql/schemas/commerce/purchase.cjs +11 -2
  163. package/dist/lib/mysql/schemas/commerce/purchase.cjs.map +1 -1
  164. package/dist/lib/mysql/schemas/commerce/purchase.js +6 -6
  165. package/dist/lib/mysql/schemas/commerce/subscription.cjs +6 -1
  166. package/dist/lib/mysql/schemas/commerce/subscription.cjs.map +1 -1
  167. package/dist/lib/mysql/schemas/commerce/subscription.js +6 -6
  168. package/dist/lib/mysql/schemas/commerce/upgradable-products.cjs.map +1 -1
  169. package/dist/lib/mysql/schemas/commerce/upgradable-products.js +7 -7
  170. package/dist/lib/mysql/schemas/communication/comment.cjs +5 -1
  171. package/dist/lib/mysql/schemas/communication/comment.cjs.map +1 -1
  172. package/dist/lib/mysql/schemas/communication/comment.js +6 -6
  173. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs +5 -1
  174. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs.map +1 -1
  175. package/dist/lib/mysql/schemas/communication/communication-preferences.js +6 -6
  176. package/dist/lib/mysql/schemas/communication/question-response.cjs.map +1 -1
  177. package/dist/lib/mysql/schemas/communication/question-response.js +7 -7
  178. package/dist/lib/mysql/schemas/content/content-contributions.cjs +5 -1
  179. package/dist/lib/mysql/schemas/content/content-contributions.cjs.map +1 -1
  180. package/dist/lib/mysql/schemas/content/content-contributions.js +6 -6
  181. package/dist/lib/mysql/schemas/content/content-resource-product.cjs.map +1 -1
  182. package/dist/lib/mysql/schemas/content/content-resource-product.js +6 -6
  183. package/dist/lib/mysql/schemas/content/content-resource-resource.cjs.map +1 -1
  184. package/dist/lib/mysql/schemas/content/content-resource-resource.js +6 -6
  185. package/dist/lib/mysql/schemas/content/content-resource-tag.cjs.map +1 -1
  186. package/dist/lib/mysql/schemas/content/content-resource-tag.js +6 -6
  187. package/dist/lib/mysql/schemas/content/content-resource-version.cjs.map +1 -1
  188. package/dist/lib/mysql/schemas/content/content-resource-version.js +6 -6
  189. package/dist/lib/mysql/schemas/content/content-resource.cjs +5 -1
  190. package/dist/lib/mysql/schemas/content/content-resource.cjs.map +1 -1
  191. package/dist/lib/mysql/schemas/content/content-resource.js +6 -6
  192. package/dist/lib/mysql/schemas/content/tag-tag.cjs.map +1 -1
  193. package/dist/lib/mysql/schemas/content/tag-tag.js +6 -6
  194. package/dist/lib/mysql/schemas/content/tag.cjs.map +1 -1
  195. package/dist/lib/mysql/schemas/content/tag.js +6 -6
  196. package/dist/lib/mysql/schemas/entitlements/entitlement.cjs +11 -2
  197. package/dist/lib/mysql/schemas/entitlements/entitlement.cjs.map +1 -1
  198. package/dist/lib/mysql/schemas/entitlements/entitlement.js +7 -7
  199. package/dist/lib/mysql/schemas/org/organization-membership-roles.cjs +11 -2
  200. package/dist/lib/mysql/schemas/org/organization-membership-roles.cjs.map +1 -1
  201. package/dist/lib/mysql/schemas/org/organization-membership-roles.js +6 -6
  202. package/dist/lib/mysql/schemas/org/organization-memberships.cjs +11 -2
  203. package/dist/lib/mysql/schemas/org/organization-memberships.cjs.map +1 -1
  204. package/dist/lib/mysql/schemas/org/organization-memberships.d.cts +16 -0
  205. package/dist/lib/mysql/schemas/org/organization-memberships.d.ts +16 -0
  206. package/dist/lib/mysql/schemas/org/organization-memberships.js +6 -6
  207. package/dist/lib/mysql/schemas/org/organizations.cjs +11 -2
  208. package/dist/lib/mysql/schemas/org/organizations.cjs.map +1 -1
  209. package/dist/lib/mysql/schemas/org/organizations.d.cts +16 -0
  210. package/dist/lib/mysql/schemas/org/organizations.d.ts +16 -0
  211. package/dist/lib/mysql/schemas/org/organizations.js +6 -6
  212. package/dist/lib/mysql/workflows/content-resource-workflow-utils.cjs +40 -0
  213. package/dist/lib/mysql/workflows/content-resource-workflow-utils.cjs.map +1 -0
  214. package/dist/lib/mysql/workflows/content-resource-workflow-utils.d.cts +4 -0
  215. package/dist/lib/mysql/workflows/content-resource-workflow-utils.d.ts +4 -0
  216. package/dist/lib/mysql/workflows/content-resource-workflow-utils.js +10 -0
  217. package/dist/lib/mysql/workflows/content-resource-workflow-utils.js.map +1 -0
  218. package/dist/lib/mysql/workflows/create-cohort.cjs +184 -0
  219. package/dist/lib/mysql/workflows/create-cohort.cjs.map +1 -0
  220. package/dist/lib/mysql/workflows/create-cohort.d.cts +24 -0
  221. package/dist/lib/mysql/workflows/create-cohort.d.ts +24 -0
  222. package/dist/lib/mysql/workflows/create-cohort.js +9 -0
  223. package/dist/lib/mysql/workflows/create-cohort.js.map +1 -0
  224. package/dist/lib/mysql/workflows/create-event-series.cjs +283 -0
  225. package/dist/lib/mysql/workflows/create-event-series.cjs.map +1 -0
  226. package/dist/lib/mysql/workflows/create-event-series.d.cts +24 -0
  227. package/dist/lib/mysql/workflows/create-event-series.d.ts +24 -0
  228. package/dist/lib/mysql/workflows/create-event-series.js +9 -0
  229. package/dist/lib/mysql/workflows/create-event-series.js.map +1 -0
  230. package/dist/lib/mysql/workflows/create-event.cjs +194 -0
  231. package/dist/lib/mysql/workflows/create-event.cjs.map +1 -0
  232. package/dist/lib/mysql/workflows/create-event.d.cts +24 -0
  233. package/dist/lib/mysql/workflows/create-event.d.ts +24 -0
  234. package/dist/lib/mysql/workflows/create-event.js +9 -0
  235. package/dist/lib/mysql/workflows/create-event.js.map +1 -0
  236. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.cjs +231 -0
  237. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.cjs.map +1 -0
  238. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.d.cts +22 -0
  239. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.d.ts +22 -0
  240. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.js +8 -0
  241. package/dist/lib/mysql/workflows/create-merchant-charge-and-purchase.js.map +1 -0
  242. package/dist/lib/mysql/workflows/create-workshop.cjs +286 -0
  243. package/dist/lib/mysql/workflows/create-workshop.cjs.map +1 -0
  244. package/dist/lib/mysql/workflows/create-workshop.d.cts +24 -0
  245. package/dist/lib/mysql/workflows/create-workshop.d.ts +24 -0
  246. package/dist/lib/mysql/workflows/create-workshop.js +9 -0
  247. package/dist/lib/mysql/workflows/create-workshop.js.map +1 -0
  248. package/dist/lib/mysql/workflows/redeem-full-price-coupon.cjs +130 -0
  249. package/dist/lib/mysql/workflows/redeem-full-price-coupon.cjs.map +1 -0
  250. package/dist/lib/mysql/workflows/redeem-full-price-coupon.d.cts +24 -0
  251. package/dist/lib/mysql/workflows/redeem-full-price-coupon.d.ts +24 -0
  252. package/dist/lib/mysql/workflows/redeem-full-price-coupon.js +8 -0
  253. package/dist/lib/mysql/workflows/redeem-full-price-coupon.js.map +1 -0
  254. package/dist/lib/mysql/workflows/transfer-purchase-to-user.cjs +95 -0
  255. package/dist/lib/mysql/workflows/transfer-purchase-to-user.cjs.map +1 -0
  256. package/dist/lib/mysql/workflows/transfer-purchase-to-user.d.cts +30 -0
  257. package/dist/lib/mysql/workflows/transfer-purchase-to-user.d.ts +30 -0
  258. package/dist/lib/mysql/workflows/transfer-purchase-to-user.js +8 -0
  259. package/dist/lib/mysql/workflows/transfer-purchase-to-user.js.map +1 -0
  260. package/dist/lib/utils.d.cts +1 -10
  261. package/dist/lib/utils.d.ts +1 -10
  262. package/dist/types.d.ts +14 -0
  263. package/dist/types.js +1 -0
  264. package/package.json +9 -5
  265. package/src/index.ts +3 -2
  266. package/src/lib/mysql/cms-resource-actions.ts +37 -0
  267. package/src/lib/mysql/context.ts +20 -0
  268. package/src/lib/mysql/index.ts +118 -4872
  269. package/src/lib/mysql/ports/auth-storage.ts +139 -0
  270. package/src/lib/mysql/ports/catalog.ts +610 -0
  271. package/src/lib/mysql/ports/content-resource.ts +442 -0
  272. package/src/lib/mysql/ports/coupon.ts +387 -0
  273. package/src/lib/mysql/ports/entitlement.ts +96 -0
  274. package/src/lib/mysql/ports/identity.ts +160 -0
  275. package/src/lib/mysql/ports/merchant.ts +274 -0
  276. package/src/lib/mysql/ports/organization.ts +216 -0
  277. package/src/lib/mysql/ports/progress.ts +366 -0
  278. package/src/lib/mysql/ports/purchase.ts +517 -0
  279. package/src/lib/mysql/ports/subscription.ts +93 -0
  280. package/src/lib/mysql/schema.ts +374 -0
  281. package/src/lib/mysql/schemas/org/organization-memberships.ts +7 -0
  282. package/src/lib/mysql/schemas/org/organizations.ts +8 -0
  283. package/src/lib/mysql/workflows/content-resource-workflow-utils.ts +22 -0
  284. package/src/lib/mysql/workflows/create-cohort.ts +239 -0
  285. package/src/lib/mysql/workflows/create-event-series.ts +384 -0
  286. package/src/lib/mysql/workflows/create-event.ts +232 -0
  287. package/src/lib/mysql/workflows/create-merchant-charge-and-purchase.ts +365 -0
  288. package/src/lib/mysql/workflows/create-workshop.ts +372 -0
  289. package/src/lib/mysql/workflows/redeem-full-price-coupon.ts +179 -0
  290. package/src/lib/mysql/workflows/transfer-purchase-to-user.ts +142 -0
  291. package/src/types.ts +33 -0
  292. package/dist/authjs.d.ts +0 -27
  293. package/dist/authjs.js +0 -1
  294. package/dist/chunk-25RKHMRM.js +0 -8729
  295. package/dist/chunk-2AW5KYAK.js +0 -101
  296. package/dist/chunk-3EF5ZXLG.js +0 -101
  297. package/dist/chunk-7FBSP3VD.js +0 -78
  298. package/dist/chunk-AP5HBIV4.js +0 -112
  299. package/dist/chunk-F56AI52P.js +0 -49
  300. package/dist/chunk-HAQZSRJL.js +0 -4696
  301. package/dist/chunk-I2U5PTWN.js +0 -79
  302. package/dist/chunk-IBQGXFEX.js +0 -8729
  303. package/dist/chunk-PJORQUQP.js +0 -58
  304. package/dist/chunk-W6RPAAKG.js +0 -2144
  305. package/dist/chunk-WKJTU24D.js +0 -88
  306. package/dist/chunk-WWBSNLRC.js +0 -63
  307. package/src/authjs.ts +0 -34
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/lib/mysql/workflows/transfer-purchase-to-user.ts
22
+ var transfer_purchase_to_user_exports = {};
23
+ __export(transfer_purchase_to_user_exports, {
24
+ createTransferPurchaseToUserWorkflow: () => createTransferPurchaseToUserWorkflow
25
+ });
26
+ module.exports = __toCommonJS(transfer_purchase_to_user_exports);
27
+ var import_drizzle_orm = require("drizzle-orm");
28
+ var import_uuid = require("uuid");
29
+ var import_schemas = require("@coursebuilder/core/schemas");
30
+ var import_merchant_customer_schema = require("@coursebuilder/core/schemas/merchant-customer-schema");
31
+ function createTransferPurchaseToUserWorkflow({ client, tables }, paymentProvider, operations) {
32
+ const { users, purchases: purchaseTable, purchaseUserTransfer, merchantCharge, merchantCustomer } = tables;
33
+ return {
34
+ transferPurchaseToUser: async (options) => {
35
+ const { purchaseId, targetUserId, sourceUserId } = options;
36
+ const transferId = `put_${(0, import_uuid.v4)()}`;
37
+ await client.transaction(async (trx) => {
38
+ const purchase = await trx.select().from(purchaseTable).where((0, import_drizzle_orm.eq)(purchaseTable.id, purchaseId)).for("update").then((rows) => rows[0]);
39
+ if (!purchase)
40
+ throw new Error("No purchase found");
41
+ if (purchase.userId !== sourceUserId)
42
+ throw new Error("Invalid source user");
43
+ await trx.update(purchaseTable).set({
44
+ userId: targetUserId
45
+ }).where((0, import_drizzle_orm.eq)(purchaseTable.id, purchase.id));
46
+ await trx.insert(purchaseUserTransfer).values({
47
+ id: transferId,
48
+ purchaseId: purchase.id,
49
+ sourceUserId,
50
+ targetUserId,
51
+ transferState: "COMPLETED",
52
+ completedAt: /* @__PURE__ */ new Date()
53
+ });
54
+ if (paymentProvider && purchase.merchantChargeId) {
55
+ await trx.update(merchantCharge).set({
56
+ userId: targetUserId
57
+ }).where((0, import_drizzle_orm.eq)(merchantCharge.id, purchase.merchantChargeId));
58
+ const updatedMerchantCharge = import_schemas.merchantChargeSchema.parse(await trx.query.merchantCharge.findFirst({
59
+ where: (0, import_drizzle_orm.eq)(merchantCharge.id, purchase.merchantChargeId)
60
+ }));
61
+ await trx.update(merchantCustomer).set({
62
+ userId: targetUserId
63
+ }).where((0, import_drizzle_orm.eq)(merchantCustomer.id, updatedMerchantCharge.merchantCustomerId));
64
+ const updatedMerchantCustomer = import_merchant_customer_schema.merchantCustomerSchema.parse(await trx.query.merchantCustomer.findFirst({
65
+ where: (0, import_drizzle_orm.eq)(merchantCustomer.id, updatedMerchantCharge.merchantCustomerId)
66
+ }));
67
+ const targetUser = import_schemas.userSchema.parse(await trx.query.users.findFirst({
68
+ where: (0, import_drizzle_orm.eq)(users.id, targetUserId)
69
+ }));
70
+ const sourceUser = import_schemas.userSchema.parse(await trx.query.users.findFirst({
71
+ where: (0, import_drizzle_orm.eq)(users.id, sourceUserId)
72
+ }));
73
+ await paymentProvider.updateCustomer(updatedMerchantCustomer.identifier, {
74
+ email: targetUser.email,
75
+ name: targetUser.name || sourceUser.name || "",
76
+ metadata: {
77
+ transferId,
78
+ transferredFrom: sourceUser.email,
79
+ transferredOn: (/* @__PURE__ */ new Date()).toISOString()
80
+ }
81
+ });
82
+ }
83
+ });
84
+ return await operations.getPurchaseUserTransferById({
85
+ id: transferId
86
+ });
87
+ }
88
+ };
89
+ }
90
+ __name(createTransferPurchaseToUserWorkflow, "createTransferPurchaseToUserWorkflow");
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ createTransferPurchaseToUserWorkflow
94
+ });
95
+ //# sourceMappingURL=transfer-purchase-to-user.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mysql/workflows/transfer-purchase-to-user.ts"],"sourcesContent":["import { eq } from 'drizzle-orm'\nimport { v4 } from 'uuid'\n\nimport type { PurchasePort } from '@coursebuilder/core/ports'\nimport { merchantChargeSchema, userSchema } from '@coursebuilder/core/schemas'\nimport { merchantCustomerSchema } from '@coursebuilder/core/schemas/merchant-customer-schema'\nimport type { PaymentsProviderConfig } from '@coursebuilder/core/types'\n\nimport type { MySqlContext } from '../context.js'\n\ntype TransferPurchaseToUserOperations = Pick<\n\tPurchasePort,\n\t'getPurchaseUserTransferById'\n>\n\n/**\n * Creates the private purchase transfer workflow.\n *\n * @param context - The shared MySQL client and table set.\n * @param paymentProvider - The configured external payment provider.\n * @param operations - Narrow purchase, merchant, and identity operations.\n * @returns The purchase-owned user transfer operation.\n *\n * @example\n * ```ts\n * const workflow = createTransferPurchaseToUserWorkflow(\n * \tcontext,\n * \tpaymentProvider,\n * \toperations,\n * )\n * ```\n */\nexport function createTransferPurchaseToUserWorkflow(\n\t{ client, tables }: MySqlContext,\n\tpaymentProvider: PaymentsProviderConfig | undefined,\n\toperations: TransferPurchaseToUserOperations,\n): Pick<PurchasePort, 'transferPurchaseToUser'> {\n\tconst {\n\t\tusers,\n\t\tpurchases: purchaseTable,\n\t\tpurchaseUserTransfer,\n\t\tmerchantCharge,\n\t\tmerchantCustomer,\n\t} = tables\n\n\treturn {\n\t\ttransferPurchaseToUser: async (options: {\n\t\t\tpurchaseId: string\n\t\t\ttargetUserId: string\n\t\t\tsourceUserId: string\n\t\t}) => {\n\t\t\tconst { purchaseId, targetUserId, sourceUserId } = options\n\t\t\tconst transferId = `put_${v4()}`\n\n\t\t\tawait client.transaction(async (trx) => {\n\t\t\t\tconst purchase = await trx\n\t\t\t\t\t.select()\n\t\t\t\t\t.from(purchaseTable)\n\t\t\t\t\t.where(eq(purchaseTable.id, purchaseId))\n\t\t\t\t\t.for('update')\n\t\t\t\t\t.then((rows) => rows[0])\n\n\t\t\t\tif (!purchase) throw new Error('No purchase found')\n\t\t\t\tif (purchase.userId !== sourceUserId)\n\t\t\t\t\tthrow new Error('Invalid source user')\n\n\t\t\t\tawait trx\n\t\t\t\t\t.update(purchaseTable)\n\t\t\t\t\t.set({ userId: targetUserId })\n\t\t\t\t\t.where(eq(purchaseTable.id, purchase.id))\n\n\t\t\t\tawait trx.insert(purchaseUserTransfer).values({\n\t\t\t\t\tid: transferId,\n\t\t\t\t\tpurchaseId: purchase.id,\n\t\t\t\t\tsourceUserId: sourceUserId,\n\t\t\t\t\ttargetUserId: targetUserId,\n\t\t\t\t\ttransferState: 'COMPLETED',\n\t\t\t\t\tcompletedAt: new Date(),\n\t\t\t\t})\n\n\t\t\t\tif (paymentProvider && purchase.merchantChargeId) {\n\t\t\t\t\tawait trx\n\t\t\t\t\t\t.update(merchantCharge)\n\t\t\t\t\t\t.set({\n\t\t\t\t\t\t\tuserId: targetUserId,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.where(eq(merchantCharge.id, purchase.merchantChargeId))\n\n\t\t\t\t\tconst updatedMerchantCharge = merchantChargeSchema.parse(\n\t\t\t\t\t\tawait trx.query.merchantCharge.findFirst({\n\t\t\t\t\t\t\twhere: eq(merchantCharge.id, purchase.merchantChargeId),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\n\t\t\t\t\tawait trx\n\t\t\t\t\t\t.update(merchantCustomer)\n\t\t\t\t\t\t.set({ userId: targetUserId })\n\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\teq(merchantCustomer.id, updatedMerchantCharge.merchantCustomerId),\n\t\t\t\t\t\t)\n\n\t\t\t\t\tconst updatedMerchantCustomer = merchantCustomerSchema.parse(\n\t\t\t\t\t\tawait trx.query.merchantCustomer.findFirst({\n\t\t\t\t\t\t\twhere: eq(\n\t\t\t\t\t\t\t\tmerchantCustomer.id,\n\t\t\t\t\t\t\t\tupdatedMerchantCharge.merchantCustomerId,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\n\t\t\t\t\tconst targetUser = userSchema.parse(\n\t\t\t\t\t\tawait trx.query.users.findFirst({\n\t\t\t\t\t\t\twhere: eq(users.id, targetUserId),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\n\t\t\t\t\tconst sourceUser = userSchema.parse(\n\t\t\t\t\t\tawait trx.query.users.findFirst({\n\t\t\t\t\t\t\twhere: eq(users.id, sourceUserId),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\n\t\t\t\t\tawait paymentProvider.updateCustomer(\n\t\t\t\t\t\tupdatedMerchantCustomer.identifier,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\temail: targetUser.email,\n\t\t\t\t\t\t\tname: targetUser.name || sourceUser.name || '',\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\ttransferId,\n\t\t\t\t\t\t\t\ttransferredFrom: sourceUser.email,\n\t\t\t\t\t\t\t\ttransferredOn: new Date().toISOString(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn await operations.getPurchaseUserTransferById({\n\t\t\t\tid: transferId,\n\t\t\t})\n\t\t},\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;yBAAmB;AACnB,kBAAmB;AAGnB,qBAAiD;AACjD,sCAAuC;AA2BhC,SAASA,qCACf,EAAEC,QAAQC,OAAM,GAChBC,iBACAC,YAA4C;AAE5C,QAAM,EACLC,OACAC,WAAWC,eACXC,sBACAC,gBACAC,iBAAgB,IACbR;AAEJ,SAAO;IACNS,wBAAwB,OAAOC,YAAAA;AAK9B,YAAM,EAAEC,YAAYC,cAAcC,aAAY,IAAKH;AACnD,YAAMI,aAAa,WAAOC,gBAAAA,CAAAA;AAE1B,YAAMhB,OAAOiB,YAAY,OAAOC,QAAAA;AAC/B,cAAMC,WAAW,MAAMD,IACrBE,OAAM,EACNC,KAAKf,aAAAA,EACLgB,UAAMC,uBAAGjB,cAAckB,IAAIZ,UAAAA,CAAAA,EAC3Ba,IAAI,QAAA,EACJC,KAAK,CAACC,SAASA,KAAK,CAAA,CAAE;AAExB,YAAI,CAACR;AAAU,gBAAM,IAAIS,MAAM,mBAAA;AAC/B,YAAIT,SAASU,WAAWf;AACvB,gBAAM,IAAIc,MAAM,qBAAA;AAEjB,cAAMV,IACJY,OAAOxB,aAAAA,EACPyB,IAAI;UAAEF,QAAQhB;QAAa,CAAA,EAC3BS,UAAMC,uBAAGjB,cAAckB,IAAIL,SAASK,EAAE,CAAA;AAExC,cAAMN,IAAIc,OAAOzB,oBAAAA,EAAsB0B,OAAO;UAC7CT,IAAIT;UACJH,YAAYO,SAASK;UACrBV;UACAD;UACAqB,eAAe;UACfC,aAAa,oBAAIC,KAAAA;QAClB,CAAA;AAEA,YAAIlC,mBAAmBiB,SAASkB,kBAAkB;AACjD,gBAAMnB,IACJY,OAAOtB,cAAAA,EACPuB,IAAI;YACJF,QAAQhB;UACT,CAAA,EACCS,UAAMC,uBAAGf,eAAegB,IAAIL,SAASkB,gBAAgB,CAAA;AAEvD,gBAAMC,wBAAwBC,oCAAqBC,MAClD,MAAMtB,IAAIuB,MAAMjC,eAAekC,UAAU;YACxCpB,WAAOC,uBAAGf,eAAegB,IAAIL,SAASkB,gBAAgB;UACvD,CAAA,CAAA;AAGD,gBAAMnB,IACJY,OAAOrB,gBAAAA,EACPsB,IAAI;YAAEF,QAAQhB;UAAa,CAAA,EAC3BS,UACAC,uBAAGd,iBAAiBe,IAAIc,sBAAsBK,kBAAkB,CAAA;AAGlE,gBAAMC,0BAA0BC,uDAAuBL,MACtD,MAAMtB,IAAIuB,MAAMhC,iBAAiBiC,UAAU;YAC1CpB,WAAOC,uBACNd,iBAAiBe,IACjBc,sBAAsBK,kBAAkB;UAE1C,CAAA,CAAA;AAGD,gBAAMG,aAAaC,0BAAWP,MAC7B,MAAMtB,IAAIuB,MAAMrC,MAAMsC,UAAU;YAC/BpB,WAAOC,uBAAGnB,MAAMoB,IAAIX,YAAAA;UACrB,CAAA,CAAA;AAGD,gBAAMmC,aAAaD,0BAAWP,MAC7B,MAAMtB,IAAIuB,MAAMrC,MAAMsC,UAAU;YAC/BpB,WAAOC,uBAAGnB,MAAMoB,IAAIV,YAAAA;UACrB,CAAA,CAAA;AAGD,gBAAMZ,gBAAgB+C,eACrBL,wBAAwBM,YACxB;YACCC,OAAOL,WAAWK;YAClBC,MAAMN,WAAWM,QAAQJ,WAAWI,QAAQ;YAC5CC,UAAU;cACTtC;cACAuC,iBAAiBN,WAAWG;cAC5BI,gBAAe,oBAAInB,KAAAA,GAAOoB,YAAW;YACtC;UACD,CAAA;QAEF;MACD,CAAA;AACA,aAAO,MAAMrD,WAAWsD,4BAA4B;QACnDjC,IAAIT;MACL,CAAA;IACD;EACD;AACD;AA7GgBhB;","names":["createTransferPurchaseToUserWorkflow","client","tables","paymentProvider","operations","users","purchases","purchaseTable","purchaseUserTransfer","merchantCharge","merchantCustomer","transferPurchaseToUser","options","purchaseId","targetUserId","sourceUserId","transferId","v4","transaction","trx","purchase","select","from","where","eq","id","for","then","rows","Error","userId","update","set","insert","values","transferState","completedAt","Date","merchantChargeId","updatedMerchantCharge","merchantChargeSchema","parse","query","findFirst","merchantCustomerId","updatedMerchantCustomer","merchantCustomerSchema","targetUser","userSchema","sourceUser","updateCustomer","identifier","email","name","metadata","transferredFrom","transferredOn","toISOString","getPurchaseUserTransferById"]}
@@ -0,0 +1,30 @@
1
+ import { PurchasePort } from '@coursebuilder/core/ports';
2
+ import { PaymentsProviderConfig } from '@coursebuilder/core/types';
3
+ import { MySqlContext } from '../context.cjs';
4
+ import 'drizzle-orm/mysql-core';
5
+ import '../schema.cjs';
6
+ import 'drizzle-orm';
7
+ import '@coursebuilder/core/auth';
8
+ import '../schemas/auth/users.cjs';
9
+
10
+ type TransferPurchaseToUserOperations = Pick<PurchasePort, 'getPurchaseUserTransferById'>;
11
+ /**
12
+ * Creates the private purchase transfer workflow.
13
+ *
14
+ * @param context - The shared MySQL client and table set.
15
+ * @param paymentProvider - The configured external payment provider.
16
+ * @param operations - Narrow purchase, merchant, and identity operations.
17
+ * @returns The purchase-owned user transfer operation.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const workflow = createTransferPurchaseToUserWorkflow(
22
+ * context,
23
+ * paymentProvider,
24
+ * operations,
25
+ * )
26
+ * ```
27
+ */
28
+ declare function createTransferPurchaseToUserWorkflow({ client, tables }: MySqlContext, paymentProvider: PaymentsProviderConfig | undefined, operations: TransferPurchaseToUserOperations): Pick<PurchasePort, 'transferPurchaseToUser'>;
29
+
30
+ export { createTransferPurchaseToUserWorkflow };
@@ -0,0 +1,30 @@
1
+ import { PurchasePort } from '@coursebuilder/core/ports';
2
+ import { PaymentsProviderConfig } from '@coursebuilder/core/types';
3
+ import { MySqlContext } from '../context.js';
4
+ import 'drizzle-orm/mysql-core';
5
+ import '../schema.js';
6
+ import 'drizzle-orm';
7
+ import '@coursebuilder/core/auth';
8
+ import '../schemas/auth/users.js';
9
+
10
+ type TransferPurchaseToUserOperations = Pick<PurchasePort, 'getPurchaseUserTransferById'>;
11
+ /**
12
+ * Creates the private purchase transfer workflow.
13
+ *
14
+ * @param context - The shared MySQL client and table set.
15
+ * @param paymentProvider - The configured external payment provider.
16
+ * @param operations - Narrow purchase, merchant, and identity operations.
17
+ * @returns The purchase-owned user transfer operation.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const workflow = createTransferPurchaseToUserWorkflow(
22
+ * context,
23
+ * paymentProvider,
24
+ * operations,
25
+ * )
26
+ * ```
27
+ */
28
+ declare function createTransferPurchaseToUserWorkflow({ client, tables }: MySqlContext, paymentProvider: PaymentsProviderConfig | undefined, operations: TransferPurchaseToUserOperations): Pick<PurchasePort, 'transferPurchaseToUser'>;
29
+
30
+ export { createTransferPurchaseToUserWorkflow };
@@ -0,0 +1,8 @@
1
+ import {
2
+ createTransferPurchaseToUserWorkflow
3
+ } from "../../../chunk-4VZJQAPV.js";
4
+ import "../../../chunk-2X5XVNDN.js";
5
+ export {
6
+ createTransferPurchaseToUserWorkflow
7
+ };
8
+ //# sourceMappingURL=transfer-purchase-to-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,19 +1,10 @@
1
1
  import { MySqlDatabase, MySqlTableFn, AnyMySqlTable } from 'drizzle-orm/mysql-core';
2
2
  import { PgDatabase, PgTableFn } from 'drizzle-orm/pg-core';
3
3
  import { BaseSQLiteDatabase, SQLiteTableFn, AnySQLiteTable } from 'drizzle-orm/sqlite-core';
4
- import { DefaultSchema } from './mysql/index.cjs';
4
+ import { DefaultSchema } from './mysql/schema.cjs';
5
5
  import 'drizzle-orm';
6
6
  import '@coursebuilder/core/auth';
7
- import '@coursebuilder/core/types';
8
- import '../authjs.cjs';
9
- import '@auth/core/adapters';
10
- import '@coursebuilder/core/adapters';
11
7
  import './mysql/schemas/auth/users.cjs';
12
- import './mysql/cms-resource-actions.cjs';
13
- import 'zod';
14
- import './mysql/schemas/content/content-resource-product.cjs';
15
- import './mysql/schemas/content/content-resource-resource.cjs';
16
- import './mysql/schemas/content/content-resource.cjs';
17
8
 
18
9
  type AnyMySqlDatabase = MySqlDatabase<any, any>;
19
10
  type AnyPgDatabase = PgDatabase<any, any, any>;
@@ -1,19 +1,10 @@
1
1
  import { MySqlDatabase, MySqlTableFn, AnyMySqlTable } from 'drizzle-orm/mysql-core';
2
2
  import { PgDatabase, PgTableFn } from 'drizzle-orm/pg-core';
3
3
  import { BaseSQLiteDatabase, SQLiteTableFn, AnySQLiteTable } from 'drizzle-orm/sqlite-core';
4
- import { DefaultSchema } from './mysql/index.js';
4
+ import { DefaultSchema } from './mysql/schema.js';
5
5
  import 'drizzle-orm';
6
6
  import '@coursebuilder/core/auth';
7
- import '@coursebuilder/core/types';
8
- import '../authjs.js';
9
- import '@auth/core/adapters';
10
- import '@coursebuilder/core/adapters';
11
7
  import './mysql/schemas/auth/users.js';
12
- import './mysql/cms-resource-actions.js';
13
- import 'zod';
14
- import './mysql/schemas/content/content-resource-product.js';
15
- import './mysql/schemas/content/content-resource-resource.js';
16
- import './mysql/schemas/content/content-resource.js';
17
8
 
18
9
  type AnyMySqlDatabase = MySqlDatabase<any, any>;
19
10
  type AnyPgDatabase = PgDatabase<any, any, any>;
@@ -0,0 +1,14 @@
1
+ import { AuthStoragePort } from '@coursebuilder/core/auth';
2
+ import { CatalogPort, ContentResourcePort, CouponPort, EntitlementPort, IdentityPort, MerchantPort, OrganizationPort, ProgressPort, PurchasePort, SubscriptionPort } from '@coursebuilder/core/ports';
3
+
4
+ /**
5
+ * Provider-neutral capability composition implemented by the Drizzle adapter.
6
+ *
7
+ * Auth runtime bindings belong at the application boundary. This type contains
8
+ * only Course Builder-owned ports plus the Drizzle client escape hatch.
9
+ */
10
+ type DrizzleAdapterComposition<TClient = unknown> = AuthStoragePort & CatalogPort & ContentResourcePort & CouponPort & EntitlementPort & IdentityPort & MerchantPort & OrganizationPort & ProgressPort & PurchasePort & SubscriptionPort & {
11
+ client: TClient;
12
+ };
13
+
14
+ export type { DrizzleAdapterComposition };
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coursebuilder/adapter-drizzle",
3
- "version": "2.1.0",
3
+ "version": "3.0.0-canary.0.0c9beb2ae",
4
4
  "private": false,
5
5
  "description": "Drizzle adapter for Course Builder.",
6
6
  "keywords": [
@@ -35,12 +35,15 @@
35
35
  "access": "public"
36
36
  },
37
37
  "dependencies": {
38
- "@auth/core": "0.37.2",
39
38
  "@sindresorhus/slugify": "^2.2.1",
40
39
  "date-fns": "^2.30.0",
41
40
  "nanoid": "^5.0.2",
42
41
  "uuid": "^9.0.1",
43
- "@coursebuilder/nodash": "0.0.3"
42
+ "@coursebuilder/commerce": "0.1.0-canary.0.0c9beb2ae",
43
+ "@coursebuilder/core": "3.0.0-canary.0.0c9beb2ae",
44
+ "@coursebuilder/nodash": "0.0.3",
45
+ "@coursebuilder/server": "0.1.0-canary.0.0c9beb2ae",
46
+ "@coursebuilder/utils": "1.1.0-canary.0.0c9beb2ae"
44
47
  },
45
48
  "devDependencies": {
46
49
  "@libsql/client": "0.5.6",
@@ -53,8 +56,7 @@
53
56
  "postgres": "^3.3.4",
54
57
  "tsup": "8.0.2",
55
58
  "tsx": "^4.7.1",
56
- "zod": "^3.22.4",
57
- "@coursebuilder/core": "2.0.1"
59
+ "zod": "^4.1.12"
58
60
  },
59
61
  "peerDependencies": {
60
62
  "drizzle-orm": "0.36.x"
@@ -66,6 +68,8 @@
66
68
  "test": "pnpm test:mysql",
67
69
  "test:mysql": "pnpm clean && ./test/mysql/test.sh",
68
70
  "test:mysql:ci": "./test/mysql/test.sh ci",
71
+ "test:mysql:schema-smoke": "pnpm clean && bash ./test/mysql-multi-project-schema/test.sh",
72
+ "test:mysql:schema-smoke:ci": "bash ./test/mysql-multi-project-schema/test.sh ci",
69
73
  "test:mysql:watch": "pnpm clean && ./test/mysql/test.sh watch"
70
74
  }
71
75
  }
package/src/index.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
 
8
8
  import { PaymentsProviderConfig } from '@coursebuilder/core/types'
9
9
 
10
- import type { AuthJsCourseBuilderAdapter } from './authjs.js'
10
+ import type { DrizzleAdapterComposition } from './types.js'
11
11
  import {
12
12
  createTables as createMySqlTables,
13
13
  mySqlDrizzleAdapter,
@@ -18,7 +18,7 @@ export function DrizzleAdapter<SqlFlavor extends SqlFlavorOptions>(
18
18
  db: SqlFlavor,
19
19
  table: TableFn<SqlFlavor>,
20
20
  paymentProvider?: PaymentsProviderConfig,
21
- ): AuthJsCourseBuilderAdapter {
21
+ ): DrizzleAdapterComposition {
22
22
  if (is(db, MySqlDatabase)) {
23
23
  return mySqlDrizzleAdapter(
24
24
  db,
@@ -33,3 +33,4 @@ export function DrizzleAdapter<SqlFlavor extends SqlFlavorOptions>(
33
33
  }
34
34
 
35
35
  export { createMySqlTables }
36
+ export type { DrizzleAdapterComposition } from './types.js'
@@ -84,13 +84,34 @@ export interface VideoPickerRow {
84
84
  createdAt: Date | null
85
85
  }
86
86
 
87
+ /**
88
+ * Null-preserving numeric coercion for JSON_EXTRACT columns — `null` stays
89
+ * `null`, numbers/strings become numbers, garbage fails the row (and the
90
+ * page fails closed, matching the all-or-nothing guard below).
91
+ */
92
+ const jsonNumber = z.preprocess(
93
+ (value) => (value == null ? null : Number(value)),
94
+ z.number().nullable().optional(),
95
+ )
96
+
87
97
  /** Row shape for the Media tab's image grid (mirrors `ImageLibraryRow` in the ui kit, plus `id`). */
88
98
  const CmsImageResourceRowSchema = z.object({
89
99
  id: z.string(),
90
100
  url: z.string(),
91
101
  alt: z.string().optional().nullable(),
102
+ // Human filename (the uploaded file's name) — the media grid prefers it
103
+ // over `alt` for the tile label; absent on older rows.
104
+ name: z.string().optional().nullable(),
92
105
  // Row creation time — the media tab's unified grid sorts by it.
93
106
  createdAt: z.coerce.date().optional().nullable(),
107
+ // Cloudinary metadata — optional/nullable so pre-metadata rows keep
108
+ // working (JSON_EXTRACT returns NULL when the key is absent). Numeric
109
+ // coercion preserves null (plain z.coerce.number() would turn it into 0);
110
+ // MySQL JSON numerics can arrive as strings through some drivers.
111
+ width: jsonNumber,
112
+ height: jsonNumber,
113
+ bytes: jsonNumber,
114
+ format: z.string().optional().nullable(),
94
115
  })
95
116
 
96
117
  export type CmsImageResourceRow = z.infer<typeof CmsImageResourceRowSchema>
@@ -347,7 +368,23 @@ export function createCmsResourceActions(
347
368
  alt: sql<
348
369
  string | null
349
370
  >`JSON_UNQUOTE(JSON_EXTRACT(${contentResource.fields}, '$.alt'))`,
371
+ name: sql<
372
+ string | null
373
+ >`JSON_UNQUOTE(JSON_EXTRACT(${contentResource.fields}, '$.name'))`,
350
374
  createdAt: contentResource.createdAt,
375
+ // Cloudinary metadata — NULL on pre-metadata rows (backfillable).
376
+ width: sql<
377
+ number | null
378
+ >`JSON_EXTRACT(${contentResource.fields}, '$.width')`,
379
+ height: sql<
380
+ number | null
381
+ >`JSON_EXTRACT(${contentResource.fields}, '$.height')`,
382
+ bytes: sql<
383
+ number | null
384
+ >`JSON_EXTRACT(${contentResource.fields}, '$.bytes')`,
385
+ format: sql<
386
+ string | null
387
+ >`JSON_UNQUOTE(JSON_EXTRACT(${contentResource.fields}, '$.format'))`,
351
388
  })
352
389
  .from(contentResource)
353
390
  .where(eq(contentResource.type, 'imageResource'))
@@ -0,0 +1,20 @@
1
+ import type { MySqlDatabase, MySqlTableFn } from 'drizzle-orm/mysql-core'
2
+
3
+ import { createTables } from './schema.js'
4
+
5
+ /** Shared MySQL adapter dependencies constructed once by the composition root. */
6
+ export type MySqlContext = Readonly<{
7
+ client: InstanceType<typeof MySqlDatabase>
8
+ tables: ReturnType<typeof createTables>
9
+ }>
10
+
11
+ /** Creates the single typed client and table-set context used by MySQL factories. */
12
+ export function createMySqlContext(
13
+ client: InstanceType<typeof MySqlDatabase>,
14
+ tableFn: MySqlTableFn,
15
+ ): MySqlContext {
16
+ return {
17
+ client,
18
+ tables: createTables(tableFn),
19
+ }
20
+ }