@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,22 @@
1
+ import { EntitlementPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.cjs';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.cjs';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.cjs';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of entitlement lookup operations.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns Both entitlement capability operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const entitlementPort = createEntitlementPort(context)
18
+ * ```
19
+ */
20
+ declare function createEntitlementPort({ client, tables, }: MySqlContext): EntitlementPort;
21
+
22
+ export { createEntitlementPort };
@@ -0,0 +1,22 @@
1
+ import { EntitlementPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.js';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.js';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.js';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of entitlement lookup operations.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns Both entitlement capability operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const entitlementPort = createEntitlementPort(context)
18
+ * ```
19
+ */
20
+ declare function createEntitlementPort({ client, tables, }: MySqlContext): EntitlementPort;
21
+
22
+ export { createEntitlementPort };
@@ -0,0 +1,9 @@
1
+ import {
2
+ createEntitlementPort
3
+ } from "../../../chunk-WJ2ZUXL3.js";
4
+ import "../../../chunk-QKOSV34V.js";
5
+ import "../../../chunk-2X5XVNDN.js";
6
+ export {
7
+ createEntitlementPort
8
+ };
9
+ //# sourceMappingURL=entitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,154 @@
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/ports/identity.ts
22
+ var identity_exports = {};
23
+ __export(identity_exports, {
24
+ createIdentityPort: () => createIdentityPort
25
+ });
26
+ module.exports = __toCommonJS(identity_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_logger = require("@coursebuilder/utils/logger");
31
+ var logger = import_logger.logger;
32
+ function toError(error) {
33
+ return error instanceof Error ? error : new Error(String(error));
34
+ }
35
+ __name(toError, "toError");
36
+ function createIdentityPort({ client, tables }) {
37
+ const { accounts, users, verificationTokens } = tables;
38
+ const getUser = /* @__PURE__ */ __name(async (data) => await client.select().from(users).where((0, import_drizzle_orm.eq)(users.id, data)).then((res) => res[0]) ?? null, "getUser");
39
+ const getUserByEmail = /* @__PURE__ */ __name(async (data) => await client.select().from(users).where((0, import_drizzle_orm.eq)(users.email, data)).then((res) => res[0]) ?? null, "getUserByEmail");
40
+ const createUser = /* @__PURE__ */ __name(async (data) => {
41
+ const id = crypto.randomUUID();
42
+ try {
43
+ await client.insert(users).values({
44
+ ...data,
45
+ id
46
+ });
47
+ const user = await getUser(id);
48
+ if (!user)
49
+ throw new Error("Failed to get user");
50
+ return user;
51
+ } catch (error) {
52
+ logger.error(toError(error), {
53
+ email: data.email,
54
+ event: "adapter.user.create.failed",
55
+ userId: id
56
+ });
57
+ throw error;
58
+ }
59
+ }, "createUser");
60
+ return {
61
+ createUser,
62
+ getUser,
63
+ getUserByEmail,
64
+ updateUser: async (data) => {
65
+ if (!data.id)
66
+ throw new Error("No user id.");
67
+ await client.update(users).set(data).where((0, import_drizzle_orm.eq)(users.id, data.id));
68
+ return await client.select().from(users).where((0, import_drizzle_orm.eq)(users.id, data.id)).then((res) => res[0]);
69
+ },
70
+ linkAccount: async (rawAccount) => {
71
+ await client.insert(accounts).values(rawAccount);
72
+ },
73
+ getUserByAccount: async (account) => {
74
+ const dbAccount = await client.select().from(accounts).where((0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(accounts.providerAccountId, account.providerAccountId), (0, import_drizzle_orm.eq)(accounts.provider, account.provider))).leftJoin(users, (0, import_drizzle_orm.eq)(accounts.userId, users.id)).then((res) => res[0]) ?? null;
75
+ return dbAccount?.User ?? null;
76
+ },
77
+ unlinkAccount: async (account) => {
78
+ await client.delete(accounts).where((0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(accounts.providerAccountId, account.providerAccountId), (0, import_drizzle_orm.eq)(accounts.provider, account.provider)));
79
+ return void 0;
80
+ },
81
+ createVerificationToken: async (token) => {
82
+ await client.insert(verificationTokens).values(token);
83
+ return await client.select().from(verificationTokens).where((0, import_drizzle_orm.eq)(verificationTokens.identifier, token.identifier)).then((res) => res[0]);
84
+ },
85
+ findOrCreateUser: async (email, name) => {
86
+ const user = await getUserByEmail(email);
87
+ if (!user) {
88
+ const newUser = await createUser({
89
+ id: `u_${(0, import_uuid.v4)()}`,
90
+ email,
91
+ name,
92
+ emailVerified: null
93
+ });
94
+ logger.info("adapter.user.created", {
95
+ email,
96
+ userId: newUser.id
97
+ });
98
+ return {
99
+ user: newUser,
100
+ isNewUser: true
101
+ };
102
+ }
103
+ return {
104
+ user,
105
+ isNewUser: false
106
+ };
107
+ },
108
+ getUserWithPurchasersByEmail: async (email) => client.query.users.findFirst({
109
+ where: (0, import_drizzle_orm.eq)(users.email, email.trim().toLowerCase()),
110
+ with: {
111
+ roles: {
112
+ with: {
113
+ role: true
114
+ }
115
+ },
116
+ purchases: {
117
+ with: {
118
+ bulkCoupon: true,
119
+ merchantCharge: true,
120
+ product: {
121
+ columns: {
122
+ id: true,
123
+ name: true,
124
+ key: true
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }),
131
+ getUserById: async (userId) => {
132
+ const user = await client.query.users.findFirst({
133
+ where: (0, import_drizzle_orm.eq)(users.id, userId),
134
+ with: {
135
+ roles: {
136
+ with: {
137
+ role: true
138
+ }
139
+ }
140
+ }
141
+ }).then(async (res) => res ? {
142
+ ...res,
143
+ roles: res.roles.map((r) => r.role)
144
+ } : void 0);
145
+ return import_schemas.userSchema.nullable().parse(user ?? null);
146
+ }
147
+ };
148
+ }
149
+ __name(createIdentityPort, "createIdentityPort");
150
+ // Annotate the CommonJS export names for ESM import in node:
151
+ 0 && (module.exports = {
152
+ createIdentityPort
153
+ });
154
+ //# sourceMappingURL=identity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mysql/ports/identity.ts"],"sourcesContent":["import { and, eq } from 'drizzle-orm'\nimport { v4 } from 'uuid'\n\nimport type { IdentityPort } from '@coursebuilder/core/ports'\nimport { userSchema, type User } from '@coursebuilder/core/schemas'\nimport { logger as baseLogger } from '@coursebuilder/utils/logger'\n\nimport type { MySqlContext } from '../context.js'\n\nconst logger = baseLogger as unknown as {\n\terror: (error: Error, attrs?: Record<string, unknown>) => void\n\tinfo: (message: string, attrs?: Record<string, unknown>) => void\n}\n\nfunction toError(error: unknown) {\n\treturn error instanceof Error ? error : new Error(String(error))\n}\n\n/**\n * Creates the MySQL implementation of Course Builder identity persistence.\n *\n * @param context - The shared MySQL client and table set.\n * @returns User and external-identity-link operations.\n *\n * @example\n * ```ts\n * const identity = createIdentityPort(context)\n * ```\n */\nexport function createIdentityPort({\n\tclient,\n\ttables,\n}: MySqlContext): Required<IdentityPort> {\n\tconst { accounts, users, verificationTokens } = tables\n\n\tconst getUser: NonNullable<IdentityPort['getUser']> = async (data) =>\n\t\t(await client\n\t\t\t.select()\n\t\t\t.from(users)\n\t\t\t.where(eq(users.id, data))\n\t\t\t.then((res) => res[0])) ?? null\n\n\tconst getUserByEmail: NonNullable<IdentityPort['getUserByEmail']> = async (\n\t\tdata,\n\t) =>\n\t\t(await client\n\t\t\t.select()\n\t\t\t.from(users)\n\t\t\t.where(eq(users.email, data))\n\t\t\t.then((res) => res[0])) ?? null\n\n\tconst createUser: NonNullable<IdentityPort['createUser']> = async (data) => {\n\t\tconst id = crypto.randomUUID()\n\t\ttry {\n\t\t\tawait client.insert(users).values({ ...data, id })\n\n\t\t\tconst user = await getUser(id)\n\t\t\tif (!user) throw new Error('Failed to get user')\n\t\t\treturn user\n\t\t} catch (error) {\n\t\t\tlogger.error(toError(error), {\n\t\t\t\temail: data.email,\n\t\t\t\tevent: 'adapter.user.create.failed',\n\t\t\t\tuserId: id,\n\t\t\t})\n\t\t\tthrow error\n\t\t}\n\t}\n\n\treturn {\n\t\tcreateUser,\n\t\tgetUser,\n\t\tgetUserByEmail,\n\t\tupdateUser: async (data) => {\n\t\t\tif (!data.id) throw new Error('No user id.')\n\t\t\tawait client.update(users).set(data).where(eq(users.id, data.id))\n\t\t\treturn await client\n\t\t\t\t.select()\n\t\t\t\t.from(users)\n\t\t\t\t.where(eq(users.id, data.id))\n\t\t\t\t.then((res) => res[0])\n\t\t},\n\t\tlinkAccount: async (rawAccount) => {\n\t\t\tawait client.insert(accounts).values(rawAccount)\n\t\t},\n\t\tgetUserByAccount: async (account) => {\n\t\t\tconst dbAccount =\n\t\t\t\t(await client\n\t\t\t\t\t.select()\n\t\t\t\t\t.from(accounts)\n\t\t\t\t\t.where(\n\t\t\t\t\t\tand(\n\t\t\t\t\t\t\teq(accounts.providerAccountId, account.providerAccountId),\n\t\t\t\t\t\t\teq(accounts.provider, account.provider),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.leftJoin(users, eq(accounts.userId, users.id))\n\t\t\t\t\t.then((res) => res[0])) ?? null\n\t\t\treturn dbAccount?.User ?? null\n\t\t},\n\t\tunlinkAccount: async (account) => {\n\t\t\tawait client\n\t\t\t\t.delete(accounts)\n\t\t\t\t.where(\n\t\t\t\t\tand(\n\t\t\t\t\t\teq(accounts.providerAccountId, account.providerAccountId),\n\t\t\t\t\t\teq(accounts.provider, account.provider),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\treturn undefined\n\t\t},\n\t\tcreateVerificationToken: async (token) => {\n\t\t\tawait client.insert(verificationTokens).values(token)\n\t\t\treturn await client\n\t\t\t\t.select()\n\t\t\t\t.from(verificationTokens)\n\t\t\t\t.where(eq(verificationTokens.identifier, token.identifier))\n\t\t\t\t.then((res) => res[0])\n\t\t},\n\t\tfindOrCreateUser: async (email, name) => {\n\t\t\tconst user = await getUserByEmail(email)\n\t\t\tif (!user) {\n\t\t\t\tconst newUser = await createUser({\n\t\t\t\t\tid: `u_${v4()}`,\n\t\t\t\t\temail,\n\t\t\t\t\tname,\n\t\t\t\t\temailVerified: null,\n\t\t\t\t})\n\t\t\t\tlogger.info('adapter.user.created', { email, userId: newUser.id })\n\t\t\t\treturn { user: newUser as User, isNewUser: true }\n\t\t\t}\n\t\t\treturn { user: user as User, isNewUser: false }\n\t\t},\n\t\tgetUserWithPurchasersByEmail: async (email) =>\n\t\t\tclient.query.users.findFirst({\n\t\t\t\twhere: eq(users.email, email.trim().toLowerCase()),\n\t\t\t\twith: {\n\t\t\t\t\troles: { with: { role: true } },\n\t\t\t\t\tpurchases: {\n\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\tbulkCoupon: true,\n\t\t\t\t\t\t\tmerchantCharge: true,\n\t\t\t\t\t\t\tproduct: { columns: { id: true, name: true, key: true } },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\tgetUserById: async (userId) => {\n\t\t\tconst user = await client.query.users\n\t\t\t\t.findFirst({\n\t\t\t\t\twhere: eq(users.id, userId),\n\t\t\t\t\twith: { roles: { with: { role: true } } },\n\t\t\t\t})\n\t\t\t\t.then(async (res) =>\n\t\t\t\t\tres ? { ...res, roles: res.roles.map((r) => r.role) } : undefined,\n\t\t\t\t)\n\t\t\treturn userSchema.nullable().parse(user ?? null)\n\t\t},\n\t}\n}\n"],"mappings":"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","names":["logger","baseLogger","toError","error","Error","String","createIdentityPort","client","tables","accounts","users","verificationTokens","getUser","data","select","from","where","eq","id","then","res","getUserByEmail","email","createUser","crypto","randomUUID","insert","values","user","event","userId","updateUser","update","set","linkAccount","rawAccount","getUserByAccount","account","dbAccount","and","providerAccountId","provider","leftJoin","User","unlinkAccount","delete","undefined","createVerificationToken","token","identifier","findOrCreateUser","name","newUser","v4","emailVerified","info","isNewUser","getUserWithPurchasersByEmail","query","findFirst","trim","toLowerCase","with","roles","role","purchases","bulkCoupon","merchantCharge","product","columns","key","getUserById","map","r","userSchema","nullable","parse"]}
@@ -0,0 +1,22 @@
1
+ import { IdentityPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.cjs';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.cjs';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.cjs';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of Course Builder identity persistence.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns User and external-identity-link operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const identity = createIdentityPort(context)
18
+ * ```
19
+ */
20
+ declare function createIdentityPort({ client, tables, }: MySqlContext): Required<IdentityPort>;
21
+
22
+ export { createIdentityPort };
@@ -0,0 +1,22 @@
1
+ import { IdentityPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.js';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.js';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.js';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of Course Builder identity persistence.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns User and external-identity-link operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const identity = createIdentityPort(context)
18
+ * ```
19
+ */
20
+ declare function createIdentityPort({ client, tables, }: MySqlContext): Required<IdentityPort>;
21
+
22
+ export { createIdentityPort };
@@ -0,0 +1,8 @@
1
+ import {
2
+ createIdentityPort
3
+ } from "../../../chunk-TNWNW666.js";
4
+ import "../../../chunk-2X5XVNDN.js";
5
+ export {
6
+ createIdentityPort
7
+ };
8
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,194 @@
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, desc2) => {
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: !(desc2 = __getOwnPropDesc(from, key)) || desc2.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/lib/mysql/ports/merchant.ts
22
+ var merchant_exports = {};
23
+ __export(merchant_exports, {
24
+ createMerchantPort: () => createMerchantPort
25
+ });
26
+ module.exports = __toCommonJS(merchant_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_account_schema = require("@coursebuilder/core/schemas/merchant-account-schema");
31
+ var import_merchant_customer_schema = require("@coursebuilder/core/schemas/merchant-customer-schema");
32
+ var import_merchant_session = require("@coursebuilder/core/schemas/merchant-session");
33
+ var import_merchant_subscription = require("@coursebuilder/core/schemas/merchant-subscription");
34
+ var import_logger = require("@coursebuilder/utils/logger");
35
+ var logger = import_logger.logger;
36
+ function createMerchantPort({ client, tables }) {
37
+ const { merchantAccount, merchantCharge, merchantCustomer, merchantEvents, merchantPrice, merchantProduct, merchantSession, merchantSubscription: merchantSubscriptionTable } = tables;
38
+ const merchantPort = {
39
+ createMerchantCustomer: async (options) => {
40
+ await client.insert(merchantCustomer).values({
41
+ id: `mc_${(0, import_uuid.v4)()}`,
42
+ identifier: options.identifier,
43
+ merchantAccountId: options.merchantAccountId,
44
+ userId: options.userId,
45
+ status: 1
46
+ });
47
+ return import_merchant_customer_schema.merchantCustomerSchema.parse(await client.query.merchantCustomer.findFirst({
48
+ where: (0, import_drizzle_orm.eq)(merchantCustomer.identifier, options.identifier)
49
+ }));
50
+ },
51
+ getMerchantAccount: async (options) => {
52
+ return import_merchant_account_schema.merchantAccountSchema.parse(await client.query.merchantAccount.findFirst({
53
+ where: (0, import_drizzle_orm.eq)(merchantAccount.label, options.provider)
54
+ }));
55
+ },
56
+ getMerchantPriceForProductId: async (productId) => {
57
+ const merchantPriceData = await client.query.merchantPrice.findFirst({
58
+ where: (0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(merchantPrice.merchantProductId, productId), (0, import_drizzle_orm.eq)(merchantPrice.status, 1))
59
+ });
60
+ const parsedMerchantPrice = import_schemas.merchantPriceSchema.safeParse(merchantPriceData);
61
+ if (!parsedMerchantPrice.success) {
62
+ logger.error(parsedMerchantPrice.error, {
63
+ event: "adapter.merchantPrice.parse_failed",
64
+ productId
65
+ });
66
+ return null;
67
+ }
68
+ return parsedMerchantPrice.data;
69
+ },
70
+ getMerchantProductForProductId: async (productId) => {
71
+ const merchantProductData = await client.query.merchantProduct.findFirst({
72
+ where: (0, import_drizzle_orm.eq)(merchantProduct.productId, productId)
73
+ });
74
+ if (!merchantProductData)
75
+ return null;
76
+ return import_schemas.merchantProductSchema.parse(merchantProductData);
77
+ },
78
+ getMerchantCustomerForUserId: async (userId) => {
79
+ const merchantCustomerData = await client.query.merchantCustomer.findFirst({
80
+ where: (0, import_drizzle_orm.eq)(merchantCustomer.userId, userId)
81
+ });
82
+ if (!merchantCustomerData)
83
+ return null;
84
+ return import_merchant_customer_schema.merchantCustomerSchema.parse(merchantCustomerData);
85
+ },
86
+ async createMerchantSession(options) {
87
+ const id = `ms_${(0, import_uuid.v4)()}`;
88
+ await client.insert(merchantSession).values({
89
+ id,
90
+ identifier: options.identifier,
91
+ merchantAccountId: options.merchantAccountId,
92
+ ...options.organizationId ? {
93
+ organizationId: options.organizationId
94
+ } : {}
95
+ });
96
+ return import_merchant_session.MerchantSessionSchema.parse(await client.query.merchantSession.findFirst({
97
+ where: (0, import_drizzle_orm.eq)(merchantSession.id, id)
98
+ }));
99
+ },
100
+ async findOrCreateMerchantCustomer(options) {
101
+ const merchantCustomer2 = import_merchant_customer_schema.merchantCustomerSchema.nullable().optional().parse(await client.query.merchantCustomer.findFirst({
102
+ where: (merchantCustomer3, { eq: eq2 }) => eq2(merchantCustomer3.identifier, options.identifier)
103
+ }));
104
+ if (merchantCustomer2) {
105
+ return merchantCustomer2;
106
+ }
107
+ return await merchantPort.createMerchantCustomer({
108
+ identifier: options.identifier,
109
+ merchantAccountId: options.merchantAccountId,
110
+ userId: options.user.id
111
+ });
112
+ },
113
+ async createMerchantEvent(options) {
114
+ const eventId = `me_${(0, import_uuid.v4)()}`;
115
+ await client.insert(merchantEvents).values({
116
+ id: eventId,
117
+ merchantAccountId: options.merchantAccountId,
118
+ identifier: options.identifier,
119
+ payload: options.payload
120
+ });
121
+ const createdEvent = await client.query.merchantEvents.findFirst({
122
+ where: (0, import_drizzle_orm.eq)(merchantEvents.id, eventId)
123
+ });
124
+ return import_schemas.merchantEventsSchema.parse(createdEvent);
125
+ },
126
+ async getMerchantEventByIdentifier(identifier) {
127
+ const event = await client.query.merchantEvents.findFirst({
128
+ where: (0, import_drizzle_orm.eq)(merchantEvents.identifier, identifier)
129
+ });
130
+ return event ? import_schemas.merchantEventsSchema.parse(event) : null;
131
+ },
132
+ async getMerchantEventsByAccount(merchantAccountId) {
133
+ const events = await client.query.merchantEvents.findMany({
134
+ where: (0, import_drizzle_orm.eq)(merchantEvents.merchantAccountId, merchantAccountId),
135
+ orderBy: [
136
+ (0, import_drizzle_orm.desc)(merchantEvents.createdAt)
137
+ ]
138
+ });
139
+ return events.map((event) => import_schemas.merchantEventsSchema.parse(event));
140
+ },
141
+ async getMerchantCharge(merchantChargeId) {
142
+ const mCharge = await client.query.merchantCharge.findFirst({
143
+ where: (0, import_drizzle_orm.eq)(merchantCharge.id, merchantChargeId)
144
+ });
145
+ const parsed = import_schemas.merchantChargeSchema.safeParse(mCharge);
146
+ if (!parsed.success) {
147
+ logger.error(parsed.error, {
148
+ event: "adapter.merchantCharge.parse_failed",
149
+ merchantChargeId
150
+ });
151
+ return null;
152
+ }
153
+ return parsed.data;
154
+ },
155
+ async getMerchantProduct(stripeProductId) {
156
+ return import_schemas.merchantProductSchema.nullable().parse(await client.query.merchantProduct.findFirst({
157
+ where: (0, import_drizzle_orm.eq)(merchantProduct.identifier, stripeProductId)
158
+ }));
159
+ },
160
+ getMerchantSubscription: async (merchantSubscriptionId) => {
161
+ return import_merchant_subscription.MerchantSubscriptionSchema.parse(await client.query.merchantSubscription.findFirst({
162
+ where: (0, import_drizzle_orm.eq)(merchantSubscriptionTable.id, merchantSubscriptionId)
163
+ }));
164
+ },
165
+ createMerchantSubscription: async (options) => {
166
+ const id = crypto.randomUUID();
167
+ await client.insert(merchantSubscriptionTable).values({
168
+ ...options,
169
+ id
170
+ });
171
+ return import_merchant_subscription.MerchantSubscriptionSchema.parse(await client.query.merchantSubscription.findFirst({
172
+ where: (0, import_drizzle_orm.eq)(merchantSubscriptionTable.id, id)
173
+ }));
174
+ },
175
+ updateMerchantSubscription: async (options) => {
176
+ await client.update(merchantSubscriptionTable).set({
177
+ status: Number(options.status)
178
+ }).where((0, import_drizzle_orm.eq)(merchantSubscriptionTable.id, options.merchantSubscriptionId));
179
+ return import_merchant_subscription.MerchantSubscriptionSchema.parse(await client.query.merchantSubscription.findFirst({
180
+ where: (0, import_drizzle_orm.eq)(merchantSubscriptionTable.id, options.merchantSubscriptionId)
181
+ }));
182
+ },
183
+ deleteMerchantSubscription: async (merchantSubscriptionId) => {
184
+ await client.delete(merchantSubscriptionTable).where((0, import_drizzle_orm.eq)(merchantSubscriptionTable.id, merchantSubscriptionId));
185
+ }
186
+ };
187
+ return merchantPort;
188
+ }
189
+ __name(createMerchantPort, "createMerchantPort");
190
+ // Annotate the CommonJS export names for ESM import in node:
191
+ 0 && (module.exports = {
192
+ createMerchantPort
193
+ });
194
+ //# sourceMappingURL=merchant.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mysql/ports/merchant.ts"],"sourcesContent":["import { and, desc, eq } from 'drizzle-orm'\nimport { v4 } from 'uuid'\n\nimport type { MerchantPort } from '@coursebuilder/core/ports'\nimport {\n\tmerchantChargeSchema,\n\tmerchantEventsSchema,\n\tmerchantPriceSchema,\n\tmerchantProductSchema,\n\ttype MerchantCharge,\n\ttype MerchantEvents,\n\ttype MerchantProduct,\n\ttype User,\n} from '@coursebuilder/core/schemas'\nimport { merchantAccountSchema } from '@coursebuilder/core/schemas/merchant-account-schema'\nimport { merchantCustomerSchema } from '@coursebuilder/core/schemas/merchant-customer-schema'\nimport type { MerchantCustomer } from '@coursebuilder/core/schemas/merchant-customer-schema'\nimport {\n\tMerchantSessionSchema,\n\ttype MerchantSession,\n} from '@coursebuilder/core/schemas/merchant-session'\nimport { MerchantSubscriptionSchema } from '@coursebuilder/core/schemas/merchant-subscription'\nimport { logger as baseLogger } from '@coursebuilder/utils/logger'\n\nimport type { MySqlContext } from '../context.js'\n\nconst logger = baseLogger as unknown as {\n\terror: (error: Error, attrs?: Record<string, unknown>) => void\n}\n\n/**\n * Creates the MySQL implementation of payment-processor mirror operations.\n *\n * @param context - The shared MySQL client and table set.\n * @returns All sixteen MerchantPort operations.\n *\n * @example\n * ```ts\n * const merchantPort = createMerchantPort(context)\n * ```\n */\nexport function createMerchantPort({\n\tclient,\n\ttables,\n}: MySqlContext): MerchantPort {\n\tconst {\n\t\tmerchantAccount,\n\t\tmerchantCharge,\n\t\tmerchantCustomer,\n\t\tmerchantEvents,\n\t\tmerchantPrice,\n\t\tmerchantProduct,\n\t\tmerchantSession,\n\t\tmerchantSubscription: merchantSubscriptionTable,\n\t} = tables\n\n\tconst merchantPort: MerchantPort = {\n\t\tcreateMerchantCustomer: async (options) => {\n\t\t\tawait client.insert(merchantCustomer).values({\n\t\t\t\tid: `mc_${v4()}`,\n\t\t\t\tidentifier: options.identifier,\n\t\t\t\tmerchantAccountId: options.merchantAccountId,\n\t\t\t\tuserId: options.userId,\n\t\t\t\tstatus: 1,\n\t\t\t})\n\t\t\treturn merchantCustomerSchema.parse(\n\t\t\t\tawait client.query.merchantCustomer.findFirst({\n\t\t\t\t\twhere: eq(merchantCustomer.identifier, options.identifier),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tgetMerchantAccount: async (options) => {\n\t\t\treturn merchantAccountSchema.parse(\n\t\t\t\tawait client.query.merchantAccount.findFirst({\n\t\t\t\t\twhere: eq(merchantAccount.label, options.provider),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tgetMerchantPriceForProductId: async (productId) => {\n\t\t\tconst merchantPriceData = await client.query.merchantPrice.findFirst({\n\t\t\t\twhere: and(\n\t\t\t\t\teq(merchantPrice.merchantProductId, productId),\n\t\t\t\t\teq(merchantPrice.status, 1),\n\t\t\t\t),\n\t\t\t})\n\n\t\t\tconst parsedMerchantPrice =\n\t\t\t\tmerchantPriceSchema.safeParse(merchantPriceData)\n\n\t\t\tif (!parsedMerchantPrice.success) {\n\t\t\t\tlogger.error(parsedMerchantPrice.error, {\n\t\t\t\t\tevent: 'adapter.merchantPrice.parse_failed',\n\t\t\t\t\tproductId,\n\t\t\t\t})\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsedMerchantPrice.data\n\t\t},\n\t\tgetMerchantProductForProductId: async (productId) => {\n\t\t\tconst merchantProductData = await client.query.merchantProduct.findFirst({\n\t\t\t\twhere: eq(merchantProduct.productId, productId),\n\t\t\t})\n\n\t\t\tif (!merchantProductData) return null\n\t\t\treturn merchantProductSchema.parse(merchantProductData)\n\t\t},\n\t\tgetMerchantCustomerForUserId: async (userId) => {\n\t\t\tconst merchantCustomerData =\n\t\t\t\tawait client.query.merchantCustomer.findFirst({\n\t\t\t\t\twhere: eq(merchantCustomer.userId, userId),\n\t\t\t\t})\n\n\t\t\tif (!merchantCustomerData) return null\n\t\t\treturn merchantCustomerSchema.parse(merchantCustomerData)\n\t\t},\n\t\tasync createMerchantSession(options): Promise<MerchantSession> {\n\t\t\tconst id = `ms_${v4()}`\n\t\t\tawait client.insert(merchantSession).values({\n\t\t\t\tid,\n\t\t\t\tidentifier: options.identifier,\n\t\t\t\tmerchantAccountId: options.merchantAccountId,\n\t\t\t\t...(options.organizationId\n\t\t\t\t\t? { organizationId: options.organizationId }\n\t\t\t\t\t: {}),\n\t\t\t})\n\n\t\t\treturn MerchantSessionSchema.parse(\n\t\t\t\tawait client.query.merchantSession.findFirst({\n\t\t\t\t\twhere: eq(merchantSession.id, id),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tasync findOrCreateMerchantCustomer(options: {\n\t\t\tuser: User\n\t\t\tidentifier: string\n\t\t\tmerchantAccountId: string\n\t\t}): Promise<MerchantCustomer | null> {\n\t\t\tconst merchantCustomer = merchantCustomerSchema\n\t\t\t\t.nullable()\n\t\t\t\t.optional()\n\t\t\t\t.parse(\n\t\t\t\t\tawait client.query.merchantCustomer.findFirst({\n\t\t\t\t\t\twhere: (merchantCustomer, { eq }) =>\n\t\t\t\t\t\t\teq(merchantCustomer.identifier, options.identifier),\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\tif (merchantCustomer) {\n\t\t\t\treturn merchantCustomer\n\t\t\t}\n\n\t\t\treturn await merchantPort.createMerchantCustomer({\n\t\t\t\tidentifier: options.identifier,\n\t\t\t\tmerchantAccountId: options.merchantAccountId,\n\t\t\t\tuserId: options.user.id,\n\t\t\t})\n\t\t},\n\t\tasync createMerchantEvent(options: {\n\t\t\tmerchantAccountId: string\n\t\t\tidentifier: string\n\t\t\tpayload: Record<string, any>\n\t\t}): Promise<MerchantEvents> {\n\t\t\tconst eventId = `me_${v4()}`\n\n\t\t\tawait client.insert(merchantEvents).values({\n\t\t\t\tid: eventId,\n\t\t\t\tmerchantAccountId: options.merchantAccountId,\n\t\t\t\tidentifier: options.identifier,\n\t\t\t\tpayload: options.payload,\n\t\t\t})\n\n\t\t\tconst createdEvent = await client.query.merchantEvents.findFirst({\n\t\t\t\twhere: eq(merchantEvents.id, eventId),\n\t\t\t})\n\n\t\t\treturn merchantEventsSchema.parse(createdEvent)\n\t\t},\n\t\tasync getMerchantEventByIdentifier(\n\t\t\tidentifier: string,\n\t\t): Promise<MerchantEvents | null> {\n\t\t\tconst event = await client.query.merchantEvents.findFirst({\n\t\t\t\twhere: eq(merchantEvents.identifier, identifier),\n\t\t\t})\n\n\t\t\treturn event ? merchantEventsSchema.parse(event) : null\n\t\t},\n\t\tasync getMerchantEventsByAccount(\n\t\t\tmerchantAccountId: string,\n\t\t): Promise<MerchantEvents[]> {\n\t\t\tconst events = await client.query.merchantEvents.findMany({\n\t\t\t\twhere: eq(merchantEvents.merchantAccountId, merchantAccountId),\n\t\t\t\torderBy: [desc(merchantEvents.createdAt)],\n\t\t\t})\n\n\t\t\treturn events.map((event) => merchantEventsSchema.parse(event))\n\t\t},\n\t\tasync getMerchantCharge(\n\t\t\tmerchantChargeId: string,\n\t\t): Promise<MerchantCharge | null> {\n\t\t\tconst mCharge = await client.query.merchantCharge.findFirst({\n\t\t\t\twhere: eq(merchantCharge.id, merchantChargeId),\n\t\t\t})\n\t\t\tconst parsed = merchantChargeSchema.safeParse(mCharge)\n\t\t\tif (!parsed.success) {\n\t\t\t\tlogger.error(parsed.error, {\n\t\t\t\t\tevent: 'adapter.merchantCharge.parse_failed',\n\t\t\t\t\tmerchantChargeId,\n\t\t\t\t})\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn parsed.data\n\t\t},\n\t\tasync getMerchantProduct(\n\t\t\tstripeProductId: string,\n\t\t): Promise<MerchantProduct | null> {\n\t\t\treturn merchantProductSchema.nullable().parse(\n\t\t\t\tawait client.query.merchantProduct.findFirst({\n\t\t\t\t\twhere: eq(merchantProduct.identifier, stripeProductId),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tgetMerchantSubscription: async (merchantSubscriptionId: string) => {\n\t\t\treturn MerchantSubscriptionSchema.parse(\n\t\t\t\tawait client.query.merchantSubscription.findFirst({\n\t\t\t\t\twhere: eq(merchantSubscriptionTable.id, merchantSubscriptionId),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tcreateMerchantSubscription: async (options: {\n\t\t\tmerchantAccountId: string\n\t\t\tmerchantCustomerId: string\n\t\t\tmerchantProductId: string\n\t\t\tidentifier: string\n\t\t}) => {\n\t\t\tconst id = crypto.randomUUID()\n\t\t\tawait client.insert(merchantSubscriptionTable).values({\n\t\t\t\t...options,\n\t\t\t\tid,\n\t\t\t})\n\n\t\t\treturn MerchantSubscriptionSchema.parse(\n\t\t\t\tawait client.query.merchantSubscription.findFirst({\n\t\t\t\t\twhere: eq(merchantSubscriptionTable.id, id),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tupdateMerchantSubscription: async (options: {\n\t\t\tmerchantSubscriptionId: string\n\t\t\tstatus: string\n\t\t}) => {\n\t\t\tawait client\n\t\t\t\t.update(merchantSubscriptionTable)\n\t\t\t\t.set({ status: Number(options.status) })\n\t\t\t\t.where(eq(merchantSubscriptionTable.id, options.merchantSubscriptionId))\n\n\t\t\treturn MerchantSubscriptionSchema.parse(\n\t\t\t\tawait client.query.merchantSubscription.findFirst({\n\t\t\t\t\twhere: eq(\n\t\t\t\t\t\tmerchantSubscriptionTable.id,\n\t\t\t\t\t\toptions.merchantSubscriptionId,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t)\n\t\t},\n\t\tdeleteMerchantSubscription: async (merchantSubscriptionId: string) => {\n\t\t\tawait client\n\t\t\t\t.delete(merchantSubscriptionTable)\n\t\t\t\t.where(eq(merchantSubscriptionTable.id, merchantSubscriptionId))\n\t\t},\n\t}\n\n\treturn merchantPort\n}\n"],"mappings":"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","names":["logger","baseLogger","createMerchantPort","client","tables","merchantAccount","merchantCharge","merchantCustomer","merchantEvents","merchantPrice","merchantProduct","merchantSession","merchantSubscription","merchantSubscriptionTable","merchantPort","createMerchantCustomer","options","insert","values","id","v4","identifier","merchantAccountId","userId","status","merchantCustomerSchema","parse","query","findFirst","where","eq","getMerchantAccount","merchantAccountSchema","label","provider","getMerchantPriceForProductId","productId","merchantPriceData","and","merchantProductId","parsedMerchantPrice","merchantPriceSchema","safeParse","success","error","event","data","getMerchantProductForProductId","merchantProductData","merchantProductSchema","getMerchantCustomerForUserId","merchantCustomerData","createMerchantSession","organizationId","MerchantSessionSchema","findOrCreateMerchantCustomer","nullable","optional","user","createMerchantEvent","eventId","payload","createdEvent","merchantEventsSchema","getMerchantEventByIdentifier","getMerchantEventsByAccount","events","findMany","orderBy","desc","createdAt","map","getMerchantCharge","merchantChargeId","mCharge","parsed","merchantChargeSchema","getMerchantProduct","stripeProductId","getMerchantSubscription","merchantSubscriptionId","MerchantSubscriptionSchema","createMerchantSubscription","crypto","randomUUID","updateMerchantSubscription","update","set","Number","deleteMerchantSubscription","delete"]}
@@ -0,0 +1,22 @@
1
+ import { MerchantPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.cjs';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.cjs';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.cjs';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of payment-processor mirror operations.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns All sixteen MerchantPort operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const merchantPort = createMerchantPort(context)
18
+ * ```
19
+ */
20
+ declare function createMerchantPort({ client, tables, }: MySqlContext): MerchantPort;
21
+
22
+ export { createMerchantPort };
@@ -0,0 +1,22 @@
1
+ import { MerchantPort } from '@coursebuilder/core/ports';
2
+ import { MySqlContext } from '../context.js';
3
+ import 'drizzle-orm/mysql-core';
4
+ import '../schema.js';
5
+ import 'drizzle-orm';
6
+ import '@coursebuilder/core/auth';
7
+ import '../schemas/auth/users.js';
8
+
9
+ /**
10
+ * Creates the MySQL implementation of payment-processor mirror operations.
11
+ *
12
+ * @param context - The shared MySQL client and table set.
13
+ * @returns All sixteen MerchantPort operations.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const merchantPort = createMerchantPort(context)
18
+ * ```
19
+ */
20
+ declare function createMerchantPort({ client, tables, }: MySqlContext): MerchantPort;
21
+
22
+ export { createMerchantPort };
@@ -0,0 +1,8 @@
1
+ import {
2
+ createMerchantPort
3
+ } from "../../../chunk-ALTODDUX.js";
4
+ import "../../../chunk-2X5XVNDN.js";
5
+ export {
6
+ createMerchantPort
7
+ };
8
+ //# sourceMappingURL=merchant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}