@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,24 @@
1
+ import { CatalogPort } 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
+ /**
11
+ * Creates the MySQL implementation of catalog and pricing operations.
12
+ *
13
+ * @param context - The shared MySQL client and table set.
14
+ * @param paymentProvider - Optional provider used by product write operations.
15
+ * @returns All eleven CatalogPort operations.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const catalogPort = createCatalogPort(context, paymentProvider)
20
+ * ```
21
+ */
22
+ declare function createCatalogPort({ client, tables }: MySqlContext, paymentProvider?: PaymentsProviderConfig): CatalogPort;
23
+
24
+ export { createCatalogPort };
@@ -0,0 +1,24 @@
1
+ import { CatalogPort } 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
+ /**
11
+ * Creates the MySQL implementation of catalog and pricing operations.
12
+ *
13
+ * @param context - The shared MySQL client and table set.
14
+ * @param paymentProvider - Optional provider used by product write operations.
15
+ * @returns All eleven CatalogPort operations.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const catalogPort = createCatalogPort(context, paymentProvider)
20
+ * ```
21
+ */
22
+ declare function createCatalogPort({ client, tables }: MySqlContext, paymentProvider?: PaymentsProviderConfig): CatalogPort;
23
+
24
+ export { createCatalogPort };
@@ -0,0 +1,9 @@
1
+ import {
2
+ createCatalogPort
3
+ } from "../../../chunk-QQKNNFFB.js";
4
+ import "../../../chunk-QKOSV34V.js";
5
+ import "../../../chunk-2X5XVNDN.js";
6
+ export {
7
+ createCatalogPort
8
+ };
9
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,321 @@
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/content-resource.ts
22
+ var content_resource_exports = {};
23
+ __export(content_resource_exports, {
24
+ createContentResourcePort: () => createContentResourcePort
25
+ });
26
+ module.exports = __toCommonJS(content_resource_exports);
27
+ var import_drizzle_orm = require("drizzle-orm");
28
+ var import_content_resource_schema = require("@coursebuilder/core/schemas/content-resource-schema");
29
+ var import_video_resource = require("@coursebuilder/core/schemas/video-resource");
30
+ var import_logger = require("@coursebuilder/utils/logger");
31
+ function toError(error) {
32
+ return error instanceof Error ? error : new Error(String(error));
33
+ }
34
+ __name(toError, "toError");
35
+ var logger = import_logger.logger;
36
+ function createContentResourcePort({ client, tables }) {
37
+ const { contentResource, contentResourceResource, contentResourceTag } = tables;
38
+ return {
39
+ addResourceToResource: async function(options) {
40
+ const { parentResourceId, childResourceId } = options;
41
+ const parentResourceData = await client.query.contentResource.findFirst({
42
+ where: (0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(import_drizzle_orm.sql`JSON_EXTRACT (${contentResource.fields}, "$.slug")`, parentResourceId), (0, import_drizzle_orm.eq)(contentResource.id, parentResourceId)),
43
+ with: {
44
+ resources: true
45
+ }
46
+ });
47
+ const parsedParentResource = import_content_resource_schema.ContentResourceSchema.safeParse(parentResourceData);
48
+ if (!parsedParentResource.success) {
49
+ return null;
50
+ }
51
+ const parentResource = parsedParentResource.data;
52
+ await client.insert(contentResourceResource).values({
53
+ resourceOfId: parentResource.id,
54
+ resourceId: childResourceId,
55
+ position: parentResource.resources?.length || 0
56
+ });
57
+ const resourceJoin = await client.query.contentResourceResource.findFirst({
58
+ where: (0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(contentResourceResource.resourceOfId, parentResource.id), (0, import_drizzle_orm.eq)(contentResourceResource.resourceId, childResourceId)),
59
+ with: {
60
+ resource: true
61
+ }
62
+ });
63
+ const parsedResourceJoin = import_content_resource_schema.ContentResourceResourceSchema.safeParse(resourceJoin);
64
+ if (!parsedResourceJoin.success) {
65
+ return null;
66
+ }
67
+ return parsedResourceJoin.data;
68
+ },
69
+ async removeResourceFromResource(options) {
70
+ const { childResourceId, parentResourceId } = options;
71
+ const parentResourceData = await client.query.contentResource.findFirst({
72
+ where: (0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(import_drizzle_orm.sql`JSON_EXTRACT (${contentResource.fields}, "$.slug")`, parentResourceId), (0, import_drizzle_orm.eq)(contentResource.id, parentResourceId))
73
+ });
74
+ const parsedParentResource = import_content_resource_schema.ContentResourceSchema.safeParse(parentResourceData);
75
+ if (!parsedParentResource.success) {
76
+ return null;
77
+ }
78
+ const parentResource = parsedParentResource.data;
79
+ const resourceJoin = await client.query.contentResourceResource.findFirst({
80
+ where: (0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(contentResourceResource.resourceOfId, parentResource.id), (0, import_drizzle_orm.eq)(contentResourceResource.resourceId, childResourceId)),
81
+ with: {
82
+ resource: true
83
+ }
84
+ });
85
+ const parsedResourceJoin = import_content_resource_schema.ContentResourceResourceSchema.safeParse(resourceJoin);
86
+ if (!parsedResourceJoin.success) {
87
+ return null;
88
+ }
89
+ await client.delete(contentResourceResource).where((0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(contentResourceResource.resourceOfId, parentResource.id), (0, import_drizzle_orm.eq)(contentResourceResource.resourceId, childResourceId)));
90
+ return parsedResourceJoin.data.resource;
91
+ },
92
+ async updateContentResourceFields(options) {
93
+ if (!options.id) {
94
+ throw new Error("No content resource id.");
95
+ }
96
+ const currentResource = await client.select().from(contentResource).where((0, import_drizzle_orm.eq)(contentResource.id, options.id)).then((res) => res[0]);
97
+ await client.update(contentResource).set({
98
+ fields: {
99
+ ...currentResource.fields,
100
+ ...options.fields
101
+ }
102
+ }).where((0, import_drizzle_orm.eq)(contentResource.id, options.id));
103
+ const resource = await client.query.contentResource.findFirst({
104
+ where: (0, import_drizzle_orm.eq)(contentResource.id, options.id),
105
+ with: {
106
+ resources: {
107
+ with: {
108
+ resource: {
109
+ with: {
110
+ resources: {
111
+ with: {
112
+ resource: true
113
+ },
114
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
115
+ }
116
+ }
117
+ }
118
+ },
119
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
120
+ }
121
+ }
122
+ });
123
+ const parsedResource = import_content_resource_schema.ContentResourceSchema.safeParse(resource);
124
+ if (!parsedResource.success) {
125
+ logger.error(parsedResource.error, {
126
+ event: "adapter.contentResource.parse_failed",
127
+ resourceId: options.id
128
+ });
129
+ return null;
130
+ }
131
+ return parsedResource.data;
132
+ },
133
+ async getVideoResource(id) {
134
+ if (!id) {
135
+ return null;
136
+ }
137
+ const query = import_drizzle_orm.sql`
138
+ SELECT
139
+ id as id,
140
+ CAST(updatedAt AS DATETIME) as updatedAt,
141
+ CAST(createdAt AS DATETIME) as createdAt,
142
+ JSON_EXTRACT (${contentResource.fields}, "$.state") AS state,
143
+ JSON_EXTRACT (${contentResource.fields}, "$.duration") AS duration,
144
+ JSON_UNQUOTE(JSON_EXTRACT (${contentResource.fields}, "$.resolution")) AS resolution,
145
+ JSON_EXTRACT (${contentResource.fields}, "$.muxPlaybackId") AS muxPlaybackId,
146
+ JSON_EXTRACT (${contentResource.fields}, "$.muxAssetId") AS muxAssetId,
147
+ JSON_EXTRACT (${contentResource.fields}, "$.transcript") AS transcript,
148
+ JSON_EXTRACT (${contentResource.fields}, "$.chapters") AS chapters
149
+ FROM
150
+ ${contentResource}
151
+ WHERE
152
+ type = 'videoResource'
153
+ AND (id = ${id});
154
+
155
+ `;
156
+ return client.execute(query).then((result) => {
157
+ const rows = Array.isArray(result) ? result[0] : result.rows;
158
+ const parsedResource = import_video_resource.VideoResourceSchema.safeParse(rows?.[0]);
159
+ return parsedResource.success ? parsedResource.data : null;
160
+ }).catch((error) => {
161
+ logger.error(toError(error), {
162
+ event: "adapter.videoResource.lookup.failed",
163
+ resourceId: id
164
+ });
165
+ throw error;
166
+ });
167
+ },
168
+ async getParentResourceOfVideoResource(videoResourceId) {
169
+ if (!videoResourceId) {
170
+ return null;
171
+ }
172
+ const results = await client.select().from(contentResource).innerJoin(contentResourceResource, (0, import_drizzle_orm.eq)(contentResourceResource.resourceOfId, contentResource.id)).where((0, import_drizzle_orm.and)((0, import_drizzle_orm.eq)(contentResourceResource.resourceId, videoResourceId), (0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(contentResource.type, "post"), (0, import_drizzle_orm.eq)(contentResource.type, "lesson")))).limit(1);
173
+ if (!results || results.length === 0) {
174
+ return null;
175
+ }
176
+ const resourceData = results[0]?.ContentResource;
177
+ if (!resourceData) {
178
+ return null;
179
+ }
180
+ const fullResource = await client.query.contentResource.findFirst({
181
+ where: (0, import_drizzle_orm.eq)(contentResource.id, resourceData.id),
182
+ with: {
183
+ resources: true
184
+ }
185
+ });
186
+ if (!fullResource) {
187
+ return null;
188
+ }
189
+ return import_content_resource_schema.ContentResourceSchema.parse(fullResource);
190
+ },
191
+ async createContentResource(data) {
192
+ const id = data.id || crypto.randomUUID();
193
+ await client.insert(contentResource).values({
194
+ ...data,
195
+ id
196
+ });
197
+ const resource = await client.query.contentResource.findFirst({
198
+ where: (0, import_drizzle_orm.eq)(contentResource.id, id),
199
+ with: {
200
+ resources: {
201
+ with: {
202
+ resource: {
203
+ with: {
204
+ resources: {
205
+ with: {
206
+ resource: true
207
+ },
208
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
209
+ }
210
+ }
211
+ }
212
+ },
213
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
214
+ }
215
+ }
216
+ });
217
+ const parsedResource = import_content_resource_schema.ContentResourceSchema.safeParse(resource);
218
+ if (!parsedResource.success) {
219
+ logger.error(parsedResource.error, {
220
+ event: "adapter.contentResource.parse_failed",
221
+ resourceId: id,
222
+ resourceType: data.type
223
+ });
224
+ throw new Error("Error parsing resource");
225
+ }
226
+ return parsedResource.data;
227
+ },
228
+ async getContentResource(data) {
229
+ const resource = await client.query.contentResource.findFirst({
230
+ where: (0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(contentResource.id, data), (0, import_drizzle_orm.eq)(import_drizzle_orm.sql`JSON_EXTRACT (${contentResource.fields}, "$.slug")`, `${data}`)),
231
+ with: {
232
+ resources: {
233
+ with: {
234
+ resource: {
235
+ with: {
236
+ resources: {
237
+ with: {
238
+ resource: {
239
+ with: {
240
+ resources: {
241
+ with: {
242
+ resource: true
243
+ }
244
+ }
245
+ }
246
+ }
247
+ },
248
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
249
+ }
250
+ }
251
+ }
252
+ },
253
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
254
+ }
255
+ }
256
+ });
257
+ const parsedResource = import_content_resource_schema.ContentResourceSchema.safeParse(resource);
258
+ if (!parsedResource.success) {
259
+ logger.error(parsedResource.error, {
260
+ event: "adapter.contentResource.parse_failed",
261
+ resourceId: resource?.id,
262
+ resourceIdOrSlug: data
263
+ });
264
+ return null;
265
+ }
266
+ return parsedResource.data;
267
+ },
268
+ async getEvent(eventIdOrSlug, options) {
269
+ const { withResources = false, withTags = false, withProducts = false, withPricing = false } = options || {};
270
+ const eventQuery = await client.query.contentResource.findFirst({
271
+ where: (0, import_drizzle_orm.and)((0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(contentResource.type, "event"), (0, import_drizzle_orm.eq)(contentResource.type, "event-series")), (0, import_drizzle_orm.or)((0, import_drizzle_orm.eq)(contentResource.id, eventIdOrSlug), (0, import_drizzle_orm.eq)(import_drizzle_orm.sql`JSON_EXTRACT (${contentResource.fields}, "$.slug")`, eventIdOrSlug))),
272
+ with: {
273
+ ...withResources && {
274
+ resources: {
275
+ with: {
276
+ resource: true
277
+ },
278
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceResource.position)
279
+ }
280
+ },
281
+ ...withTags && {
282
+ tags: {
283
+ with: {
284
+ tag: true
285
+ },
286
+ orderBy: (0, import_drizzle_orm.asc)(contentResourceTag.position)
287
+ }
288
+ },
289
+ ...withProducts && {
290
+ resourceProducts: {
291
+ with: {
292
+ product: {
293
+ ...withPricing && {
294
+ with: {
295
+ price: true
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ });
304
+ const parsedEvent = import_content_resource_schema.ContentResourceSchema.safeParse(eventQuery);
305
+ if (!parsedEvent.success) {
306
+ logger.debug("Error parsing event", {
307
+ eventQuery,
308
+ error: parsedEvent.error
309
+ });
310
+ return null;
311
+ }
312
+ return parsedEvent.data;
313
+ }
314
+ };
315
+ }
316
+ __name(createContentResourcePort, "createContentResourcePort");
317
+ // Annotate the CommonJS export names for ESM import in node:
318
+ 0 && (module.exports = {
319
+ createContentResourcePort
320
+ });
321
+ //# sourceMappingURL=content-resource.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mysql/ports/content-resource.ts"],"sourcesContent":["import { and, asc, eq, or, sql } from 'drizzle-orm'\n\nimport type { ContentResourcePort } from '@coursebuilder/core/ports'\nimport {\n\tContentResourceResourceSchema,\n\tContentResourceSchema,\n\ttype ContentResource,\n} from '@coursebuilder/core/schemas/content-resource-schema'\nimport { VideoResourceSchema } from '@coursebuilder/core/schemas/video-resource'\nimport { logger as baseLogger } from '@coursebuilder/utils/logger'\n\nimport type { MySqlContext } from '../context.js'\n\ntype OrdinaryContentResourcePort = Omit<\n\tContentResourcePort,\n\t'createEvent' | 'createEventSeries' | 'createCohort' | 'createWorkshop'\n>\n\nfunction toError(error: unknown) {\n\treturn error instanceof Error ? error : new Error(String(error))\n}\n\nconst logger = baseLogger as unknown as {\n\terror: (error: Error, attrs?: Record<string, unknown>) => void\n\tdebug: (message: string, attrs?: Record<string, unknown>) => void\n}\n\n/**\n * Creates the MySQL implementation of ordinary content resource persistence.\n *\n * @param context - The shared MySQL client and table set.\n * @returns The eight content resource operations without composition creators.\n *\n * @example\n * ```ts\n * const contentResourcePort = createContentResourcePort(context)\n * ```\n */\nexport function createContentResourcePort({\n\tclient,\n\ttables,\n}: MySqlContext): OrdinaryContentResourcePort {\n\tconst { contentResource, contentResourceResource, contentResourceTag } =\n\t\ttables\n\n\treturn {\n\t\taddResourceToResource: async function (options) {\n\t\t\tconst { parentResourceId, childResourceId } = options\n\n\t\t\tconst parentResourceData = await client.query.contentResource.findFirst({\n\t\t\t\twhere: or(\n\t\t\t\t\teq(\n\t\t\t\t\t\tsql`JSON_EXTRACT (${contentResource.fields}, \"$.slug\")`,\n\t\t\t\t\t\tparentResourceId,\n\t\t\t\t\t),\n\t\t\t\t\teq(contentResource.id, parentResourceId),\n\t\t\t\t),\n\t\t\t\twith: {\n\t\t\t\t\tresources: true,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst parsedParentResource =\n\t\t\t\tContentResourceSchema.safeParse(parentResourceData)\n\t\t\tif (!parsedParentResource.success) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst parentResource = parsedParentResource.data\n\n\t\t\tawait client.insert(contentResourceResource).values({\n\t\t\t\tresourceOfId: parentResource.id,\n\t\t\t\tresourceId: childResourceId,\n\t\t\t\tposition: parentResource.resources?.length || 0,\n\t\t\t})\n\n\t\t\tconst resourceJoin = await client.query.contentResourceResource.findFirst(\n\t\t\t\t{\n\t\t\t\t\twhere: and(\n\t\t\t\t\t\teq(contentResourceResource.resourceOfId, parentResource.id),\n\t\t\t\t\t\teq(contentResourceResource.resourceId, childResourceId),\n\t\t\t\t\t),\n\t\t\t\t\twith: {\n\t\t\t\t\t\tresource: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tconst parsedResourceJoin =\n\t\t\t\tContentResourceResourceSchema.safeParse(resourceJoin)\n\t\t\tif (!parsedResourceJoin.success) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsedResourceJoin.data\n\t\t},\n\t\tasync removeResourceFromResource(options) {\n\t\t\tconst { childResourceId, parentResourceId } = options\n\n\t\t\tconst parentResourceData = await client.query.contentResource.findFirst({\n\t\t\t\twhere: or(\n\t\t\t\t\teq(\n\t\t\t\t\t\tsql`JSON_EXTRACT (${contentResource.fields}, \"$.slug\")`,\n\t\t\t\t\t\tparentResourceId,\n\t\t\t\t\t),\n\t\t\t\t\teq(contentResource.id, parentResourceId),\n\t\t\t\t),\n\t\t\t})\n\n\t\t\tconst parsedParentResource =\n\t\t\t\tContentResourceSchema.safeParse(parentResourceData)\n\t\t\tif (!parsedParentResource.success) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst parentResource = parsedParentResource.data\n\n\t\t\tconst resourceJoin = await client.query.contentResourceResource.findFirst(\n\t\t\t\t{\n\t\t\t\t\twhere: and(\n\t\t\t\t\t\teq(contentResourceResource.resourceOfId, parentResource.id),\n\t\t\t\t\t\teq(contentResourceResource.resourceId, childResourceId),\n\t\t\t\t\t),\n\t\t\t\t\twith: {\n\t\t\t\t\t\tresource: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tconst parsedResourceJoin =\n\t\t\t\tContentResourceResourceSchema.safeParse(resourceJoin)\n\t\t\tif (!parsedResourceJoin.success) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tawait client\n\t\t\t\t.delete(contentResourceResource)\n\t\t\t\t.where(\n\t\t\t\t\tand(\n\t\t\t\t\t\teq(contentResourceResource.resourceOfId, parentResource.id),\n\t\t\t\t\t\teq(contentResourceResource.resourceId, childResourceId),\n\t\t\t\t\t),\n\t\t\t\t)\n\n\t\t\treturn parsedResourceJoin.data.resource\n\t\t},\n\t\tasync updateContentResourceFields(options) {\n\t\t\tif (!options.id) {\n\t\t\t\tthrow new Error('No content resource id.')\n\t\t\t}\n\n\t\t\tconst currentResource = await client\n\t\t\t\t.select()\n\t\t\t\t.from(contentResource)\n\t\t\t\t.where(eq(contentResource.id, options.id))\n\t\t\t\t.then((res) => res[0])\n\n\t\t\tawait client\n\t\t\t\t.update(contentResource)\n\t\t\t\t.set({ fields: { ...currentResource.fields, ...options.fields } })\n\t\t\t\t.where(eq(contentResource.id, options.id))\n\n\t\t\tconst resource = await client.query.contentResource.findFirst({\n\t\t\t\twhere: eq(contentResource.id, options.id),\n\t\t\t\twith: {\n\t\t\t\t\tresources: {\n\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\t\t\tresource: true,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst parsedResource = ContentResourceSchema.safeParse(resource)\n\n\t\t\tif (!parsedResource.success) {\n\t\t\t\tlogger.error(parsedResource.error, {\n\t\t\t\t\tevent: 'adapter.contentResource.parse_failed',\n\t\t\t\t\tresourceId: options.id,\n\t\t\t\t})\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsedResource.data\n\t\t},\n\t\tasync getVideoResource(id) {\n\t\t\tif (!id) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst query = sql`\n SELECT\n id as id,\n CAST(updatedAt AS DATETIME) as updatedAt,\n CAST(createdAt AS DATETIME) as createdAt,\n JSON_EXTRACT (${contentResource.fields}, \"$.state\") AS state,\n JSON_EXTRACT (${contentResource.fields}, \"$.duration\") AS duration,\n JSON_UNQUOTE(JSON_EXTRACT (${contentResource.fields}, \"$.resolution\")) AS resolution,\n JSON_EXTRACT (${contentResource.fields}, \"$.muxPlaybackId\") AS muxPlaybackId,\n JSON_EXTRACT (${contentResource.fields}, \"$.muxAssetId\") AS muxAssetId,\n JSON_EXTRACT (${contentResource.fields}, \"$.transcript\") AS transcript,\n JSON_EXTRACT (${contentResource.fields}, \"$.chapters\") AS chapters\n FROM\n ${contentResource}\n WHERE\n type = 'videoResource'\n AND (id = ${id});\n\n `\n\t\t\treturn client\n\t\t\t\t.execute(query)\n\t\t\t\t.then((result: any) => {\n\t\t\t\t\tconst rows = Array.isArray(result) ? result[0] : result.rows\n\t\t\t\t\tconst parsedResource = VideoResourceSchema.safeParse(rows?.[0])\n\t\t\t\t\treturn parsedResource.success ? parsedResource.data : null\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error(toError(error), {\n\t\t\t\t\t\tevent: 'adapter.videoResource.lookup.failed',\n\t\t\t\t\t\tresourceId: id,\n\t\t\t\t\t})\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tasync getParentResourceOfVideoResource(\n\t\t\tvideoResourceId: string,\n\t\t): Promise<ContentResource | null> {\n\t\t\tif (!videoResourceId) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\t// Use a SQL query to find the parent post or lesson of this video resource\n\t\t\tconst results = await client\n\t\t\t\t.select()\n\t\t\t\t.from(contentResource)\n\t\t\t\t.innerJoin(\n\t\t\t\t\tcontentResourceResource,\n\t\t\t\t\teq(contentResourceResource.resourceOfId, contentResource.id),\n\t\t\t\t)\n\t\t\t\t.where(\n\t\t\t\t\tand(\n\t\t\t\t\t\teq(contentResourceResource.resourceId, videoResourceId),\n\t\t\t\t\t\tor(\n\t\t\t\t\t\t\teq(contentResource.type, 'post'),\n\t\t\t\t\t\t\teq(contentResource.type, 'lesson'),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.limit(1)\n\n\t\t\tif (!results || results.length === 0) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst resourceData = results[0]?.ContentResource\n\n\t\t\tif (!resourceData) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\t// Fetch the full resource with relationships\n\t\t\tconst fullResource = await client.query.contentResource.findFirst({\n\t\t\t\twhere: eq(contentResource.id, resourceData.id),\n\t\t\t\twith: {\n\t\t\t\t\tresources: true,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (!fullResource) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn ContentResourceSchema.parse(fullResource)\n\t\t},\n\t\tasync createContentResource(data) {\n\t\t\tconst id = data.id || crypto.randomUUID()\n\n\t\t\tawait client.insert(contentResource).values({ ...data, id })\n\n\t\t\tconst resource = await client.query.contentResource.findFirst({\n\t\t\t\twhere: eq(contentResource.id, id),\n\t\t\t\twith: {\n\t\t\t\t\tresources: {\n\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\t\t\tresource: true,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst parsedResource = ContentResourceSchema.safeParse(resource)\n\n\t\t\tif (!parsedResource.success) {\n\t\t\t\tlogger.error(parsedResource.error, {\n\t\t\t\t\tevent: 'adapter.contentResource.parse_failed',\n\t\t\t\t\tresourceId: id,\n\t\t\t\t\tresourceType: data.type,\n\t\t\t\t})\n\t\t\t\tthrow new Error('Error parsing resource')\n\t\t\t}\n\n\t\t\treturn parsedResource.data\n\t\t},\n\t\tasync getContentResource(data) {\n\t\t\tconst resource = await client.query.contentResource.findFirst({\n\t\t\t\twhere: or(\n\t\t\t\t\teq(contentResource.id, data),\n\t\t\t\t\teq(\n\t\t\t\t\t\tsql`JSON_EXTRACT (${contentResource.fields}, \"$.slug\")`,\n\t\t\t\t\t\t`${data}`,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\twith: {\n\t\t\t\t\tresources: {\n\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst parsedResource = ContentResourceSchema.safeParse(resource)\n\n\t\t\tif (!parsedResource.success) {\n\t\t\t\tlogger.error(parsedResource.error, {\n\t\t\t\t\tevent: 'adapter.contentResource.parse_failed',\n\t\t\t\t\tresourceId: resource?.id,\n\t\t\t\t\tresourceIdOrSlug: data,\n\t\t\t\t})\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsedResource.data\n\t\t},\n\t\tasync getEvent(\n\t\t\teventIdOrSlug: string,\n\t\t\toptions?: {\n\t\t\t\twithResources?: boolean\n\t\t\t\twithTags?: boolean\n\t\t\t\twithProducts?: boolean\n\t\t\t\twithPricing?: boolean\n\t\t\t},\n\t\t): Promise<ContentResource | null> {\n\t\t\tconst {\n\t\t\t\twithResources = false,\n\t\t\t\twithTags = false,\n\t\t\t\twithProducts = false,\n\t\t\t\twithPricing = false,\n\t\t\t} = options || {}\n\n\t\t\tconst eventQuery = await client.query.contentResource.findFirst({\n\t\t\t\twhere: and(\n\t\t\t\t\tor(\n\t\t\t\t\t\teq(contentResource.type, 'event'),\n\t\t\t\t\t\teq(contentResource.type, 'event-series'),\n\t\t\t\t\t),\n\t\t\t\t\tor(\n\t\t\t\t\t\teq(contentResource.id, eventIdOrSlug),\n\t\t\t\t\t\teq(\n\t\t\t\t\t\t\tsql`JSON_EXTRACT (${contentResource.fields}, \"$.slug\")`,\n\t\t\t\t\t\t\teventIdOrSlug,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\twith: {\n\t\t\t\t\t...(withResources && {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\twith: { resource: true },\n\t\t\t\t\t\t\torderBy: asc(contentResourceResource.position),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\t...(withTags && {\n\t\t\t\t\t\ttags: {\n\t\t\t\t\t\t\twith: { tag: true },\n\t\t\t\t\t\t\torderBy: asc(contentResourceTag.position),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\t...(withProducts && {\n\t\t\t\t\t\tresourceProducts: {\n\t\t\t\t\t\t\twith: {\n\t\t\t\t\t\t\t\tproduct: {\n\t\t\t\t\t\t\t\t\t...(withPricing && {\n\t\t\t\t\t\t\t\t\t\twith: { price: true },\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t},\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\n\t\t\tconst parsedEvent = ContentResourceSchema.safeParse(eventQuery)\n\t\t\tif (!parsedEvent.success) {\n\t\t\t\tlogger.debug('Error parsing event', {\n\t\t\t\t\teventQuery,\n\t\t\t\t\terror: parsedEvent.error,\n\t\t\t\t})\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsedEvent.data\n\t\t},\n\t}\n}\n"],"mappings":"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","names":["toError","error","Error","String","logger","baseLogger","createContentResourcePort","client","tables","contentResource","contentResourceResource","contentResourceTag","addResourceToResource","options","parentResourceId","childResourceId","parentResourceData","query","findFirst","where","or","eq","sql","fields","id","with","resources","parsedParentResource","ContentResourceSchema","safeParse","success","parentResource","data","insert","values","resourceOfId","resourceId","position","length","resourceJoin","and","resource","parsedResourceJoin","ContentResourceResourceSchema","removeResourceFromResource","delete","updateContentResourceFields","currentResource","select","from","then","res","update","set","orderBy","asc","parsedResource","event","getVideoResource","execute","result","rows","Array","isArray","VideoResourceSchema","catch","getParentResourceOfVideoResource","videoResourceId","results","innerJoin","type","limit","resourceData","ContentResource","fullResource","parse","createContentResource","crypto","randomUUID","resourceType","getContentResource","resourceIdOrSlug","getEvent","eventIdOrSlug","withResources","withTags","withProducts","withPricing","eventQuery","tags","tag","resourceProducts","product","price","parsedEvent","debug"]}
@@ -0,0 +1,23 @@
1
+ import { ContentResourcePort } 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
+ type OrdinaryContentResourcePort = Omit<ContentResourcePort, 'createEvent' | 'createEventSeries' | 'createCohort' | 'createWorkshop'>;
10
+ /**
11
+ * Creates the MySQL implementation of ordinary content resource persistence.
12
+ *
13
+ * @param context - The shared MySQL client and table set.
14
+ * @returns The eight content resource operations without composition creators.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const contentResourcePort = createContentResourcePort(context)
19
+ * ```
20
+ */
21
+ declare function createContentResourcePort({ client, tables, }: MySqlContext): OrdinaryContentResourcePort;
22
+
23
+ export { createContentResourcePort };
@@ -0,0 +1,23 @@
1
+ import { ContentResourcePort } 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
+ type OrdinaryContentResourcePort = Omit<ContentResourcePort, 'createEvent' | 'createEventSeries' | 'createCohort' | 'createWorkshop'>;
10
+ /**
11
+ * Creates the MySQL implementation of ordinary content resource persistence.
12
+ *
13
+ * @param context - The shared MySQL client and table set.
14
+ * @returns The eight content resource operations without composition creators.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const contentResourcePort = createContentResourcePort(context)
19
+ * ```
20
+ */
21
+ declare function createContentResourcePort({ client, tables, }: MySqlContext): OrdinaryContentResourcePort;
22
+
23
+ export { createContentResourcePort };
@@ -0,0 +1,8 @@
1
+ import {
2
+ createContentResourcePort
3
+ } from "../../../chunk-LWEKWDLC.js";
4
+ import "../../../chunk-2X5XVNDN.js";
5
+ export {
6
+ createContentResourcePort
7
+ };
8
+ //# sourceMappingURL=content-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}