@coursebuilder/adapter-drizzle 0.4.0 → 0.5.0

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 (251) hide show
  1. package/dist/{chunk-57CX5SOI.js → chunk-2UU2F4DM.js} +5 -4
  2. package/dist/{chunk-V23SCQL7.js → chunk-3NUCFLQJ.js} +2 -2
  3. package/dist/{chunk-Y7QZGEPT.js → chunk-4ZWS76VQ.js} +2 -2
  4. package/dist/{chunk-PPBEA4EM.js → chunk-6ON2O6UD.js} +2 -2
  5. package/dist/{chunk-ULEUIL2Y.js → chunk-BM5UKWXI.js} +3 -3
  6. package/dist/{chunk-IDINCRHK.js → chunk-CQNKTFXE.js} +3 -3
  7. package/dist/{chunk-N7UDJAI3.js → chunk-FRA4ZCRA.js} +462 -337
  8. package/dist/{chunk-J4LBG2TH.js → chunk-GINRTL6J.js} +2 -2
  9. package/dist/chunk-JZQ666KH.js +62 -0
  10. package/dist/{chunk-GLPDG7UE.js → chunk-KDEWFXEP.js} +2 -2
  11. package/dist/{chunk-MBB4GIJI.js → chunk-LERR6HQ3.js} +2 -2
  12. package/dist/{chunk-VDVCCU7D.js → chunk-LZHZDFNZ.js} +2 -2
  13. package/dist/{chunk-XJHSXR42.js → chunk-O6JECJRY.js} +4 -4
  14. package/dist/{chunk-BX5SO2JG.js → chunk-P4VXXTVA.js} +2 -2
  15. package/dist/{chunk-VXZRMVNY.js → chunk-QP6YMUQX.js} +2 -2
  16. package/dist/chunk-QTGVGIRO.js +54 -0
  17. package/dist/{chunk-ZD3R6UPJ.js → chunk-SRTIWWLG.js} +7 -7
  18. package/dist/{chunk-DL3UMWB4.js → chunk-TBM3AK3P.js} +3 -3
  19. package/dist/{chunk-FNYW3XKR.js → chunk-XIGJFVUM.js} +8 -8
  20. package/dist/{chunk-JKOYOL7A.js → chunk-YGRYHMCG.js} +2 -2
  21. package/dist/chunk-YVVXDJHI.js +56 -0
  22. package/dist/{chunk-A26D3TCA.js → chunk-Z245DYMP.js} +159 -62
  23. package/dist/index.js +22 -19
  24. package/dist/lib/mysql/index.cjs +992 -650
  25. package/dist/lib/mysql/index.cjs.map +1 -1
  26. package/dist/lib/mysql/index.d.cts +2064 -1148
  27. package/dist/lib/mysql/index.d.ts +2064 -1148
  28. package/dist/lib/mysql/index.js +22 -19
  29. package/dist/lib/mysql/schemas/auth/accounts.cjs +85 -77
  30. package/dist/lib/mysql/schemas/auth/accounts.cjs.map +1 -1
  31. package/dist/lib/mysql/schemas/auth/accounts.d.cts +17 -17
  32. package/dist/lib/mysql/schemas/auth/accounts.d.ts +17 -17
  33. package/dist/lib/mysql/schemas/auth/accounts.js +12 -12
  34. package/dist/lib/mysql/schemas/auth/device-access-token.cjs +214 -0
  35. package/dist/lib/mysql/schemas/auth/device-access-token.cjs.map +1 -0
  36. package/dist/lib/mysql/schemas/auth/device-access-token.d.cts +52 -0
  37. package/dist/lib/mysql/schemas/auth/device-access-token.d.ts +52 -0
  38. package/dist/lib/mysql/schemas/auth/device-access-token.js +22 -0
  39. package/dist/lib/mysql/schemas/auth/device-access-token.js.map +1 -0
  40. package/dist/lib/mysql/schemas/auth/device-verification.cjs +222 -0
  41. package/dist/lib/mysql/schemas/auth/device-verification.cjs.map +1 -0
  42. package/dist/lib/mysql/schemas/auth/device-verification.d.cts +88 -0
  43. package/dist/lib/mysql/schemas/auth/device-verification.d.ts +88 -0
  44. package/dist/lib/mysql/schemas/auth/device-verification.js +22 -0
  45. package/dist/lib/mysql/schemas/auth/device-verification.js.map +1 -0
  46. package/dist/lib/mysql/schemas/auth/permissions.cjs +1 -1
  47. package/dist/lib/mysql/schemas/auth/permissions.cjs.map +1 -1
  48. package/dist/lib/mysql/schemas/auth/permissions.d.cts +9 -9
  49. package/dist/lib/mysql/schemas/auth/permissions.d.ts +9 -9
  50. package/dist/lib/mysql/schemas/auth/permissions.js +1 -1
  51. package/dist/lib/mysql/schemas/auth/role-permissions.cjs +74 -66
  52. package/dist/lib/mysql/schemas/auth/role-permissions.cjs.map +1 -1
  53. package/dist/lib/mysql/schemas/auth/role-permissions.d.cts +10 -10
  54. package/dist/lib/mysql/schemas/auth/role-permissions.d.ts +10 -10
  55. package/dist/lib/mysql/schemas/auth/role-permissions.js +13 -13
  56. package/dist/lib/mysql/schemas/auth/roles.cjs +72 -64
  57. package/dist/lib/mysql/schemas/auth/roles.cjs.map +1 -1
  58. package/dist/lib/mysql/schemas/auth/roles.d.cts +10 -10
  59. package/dist/lib/mysql/schemas/auth/roles.d.ts +10 -10
  60. package/dist/lib/mysql/schemas/auth/roles.js +12 -12
  61. package/dist/lib/mysql/schemas/auth/sessions.cjs +75 -67
  62. package/dist/lib/mysql/schemas/auth/sessions.cjs.map +1 -1
  63. package/dist/lib/mysql/schemas/auth/sessions.d.cts +6 -6
  64. package/dist/lib/mysql/schemas/auth/sessions.d.ts +6 -6
  65. package/dist/lib/mysql/schemas/auth/sessions.js +13 -13
  66. package/dist/lib/mysql/schemas/auth/user-permissions.cjs +77 -69
  67. package/dist/lib/mysql/schemas/auth/user-permissions.cjs.map +1 -1
  68. package/dist/lib/mysql/schemas/auth/user-permissions.d.cts +10 -10
  69. package/dist/lib/mysql/schemas/auth/user-permissions.d.ts +10 -10
  70. package/dist/lib/mysql/schemas/auth/user-permissions.js +12 -12
  71. package/dist/lib/mysql/schemas/auth/user-prefs.cjs +222 -0
  72. package/dist/lib/mysql/schemas/auth/user-prefs.cjs.map +1 -0
  73. package/dist/lib/mysql/schemas/auth/user-prefs.d.cts +100 -0
  74. package/dist/lib/mysql/schemas/auth/user-prefs.d.ts +100 -0
  75. package/dist/lib/mysql/schemas/auth/user-prefs.js +21 -0
  76. package/dist/lib/mysql/schemas/auth/user-prefs.js.map +1 -0
  77. package/dist/lib/mysql/schemas/auth/user-roles.cjs +77 -69
  78. package/dist/lib/mysql/schemas/auth/user-roles.cjs.map +1 -1
  79. package/dist/lib/mysql/schemas/auth/user-roles.d.cts +10 -10
  80. package/dist/lib/mysql/schemas/auth/user-roles.d.ts +10 -10
  81. package/dist/lib/mysql/schemas/auth/user-roles.js +12 -12
  82. package/dist/lib/mysql/schemas/auth/users.cjs +263 -180
  83. package/dist/lib/mysql/schemas/auth/users.cjs.map +1 -1
  84. package/dist/lib/mysql/schemas/auth/users.d.cts +35 -21
  85. package/dist/lib/mysql/schemas/auth/users.d.ts +35 -21
  86. package/dist/lib/mysql/schemas/auth/users.js +12 -12
  87. package/dist/lib/mysql/schemas/auth/verification-tokens.cjs +1 -1
  88. package/dist/lib/mysql/schemas/auth/verification-tokens.cjs.map +1 -1
  89. package/dist/lib/mysql/schemas/auth/verification-tokens.d.cts +5 -5
  90. package/dist/lib/mysql/schemas/auth/verification-tokens.d.ts +5 -5
  91. package/dist/lib/mysql/schemas/auth/verification-tokens.js +1 -1
  92. package/dist/lib/mysql/schemas/commerce/coupon.cjs +75 -66
  93. package/dist/lib/mysql/schemas/commerce/coupon.cjs.map +1 -1
  94. package/dist/lib/mysql/schemas/commerce/coupon.d.cts +19 -19
  95. package/dist/lib/mysql/schemas/commerce/coupon.d.ts +19 -19
  96. package/dist/lib/mysql/schemas/commerce/coupon.js +12 -12
  97. package/dist/lib/mysql/schemas/commerce/merchant-account.cjs +1 -1
  98. package/dist/lib/mysql/schemas/commerce/merchant-account.cjs.map +1 -1
  99. package/dist/lib/mysql/schemas/commerce/merchant-account.d.cts +6 -6
  100. package/dist/lib/mysql/schemas/commerce/merchant-account.d.ts +6 -6
  101. package/dist/lib/mysql/schemas/commerce/merchant-account.js +1 -1
  102. package/dist/lib/mysql/schemas/commerce/merchant-charge.cjs +6 -5
  103. package/dist/lib/mysql/schemas/commerce/merchant-charge.cjs.map +1 -1
  104. package/dist/lib/mysql/schemas/commerce/merchant-charge.d.cts +13 -13
  105. package/dist/lib/mysql/schemas/commerce/merchant-charge.d.ts +13 -13
  106. package/dist/lib/mysql/schemas/commerce/merchant-charge.js +4 -4
  107. package/dist/lib/mysql/schemas/commerce/merchant-coupon.cjs +1 -1
  108. package/dist/lib/mysql/schemas/commerce/merchant-coupon.cjs.map +1 -1
  109. package/dist/lib/mysql/schemas/commerce/merchant-coupon.d.cts +7 -7
  110. package/dist/lib/mysql/schemas/commerce/merchant-coupon.d.ts +7 -7
  111. package/dist/lib/mysql/schemas/commerce/merchant-coupon.js +1 -1
  112. package/dist/lib/mysql/schemas/commerce/merchant-customer.cjs +3 -2
  113. package/dist/lib/mysql/schemas/commerce/merchant-customer.cjs.map +1 -1
  114. package/dist/lib/mysql/schemas/commerce/merchant-customer.d.cts +7 -7
  115. package/dist/lib/mysql/schemas/commerce/merchant-customer.d.ts +7 -7
  116. package/dist/lib/mysql/schemas/commerce/merchant-customer.js +1 -1
  117. package/dist/lib/mysql/schemas/commerce/merchant-price.cjs +1 -1
  118. package/dist/lib/mysql/schemas/commerce/merchant-price.cjs.map +1 -1
  119. package/dist/lib/mysql/schemas/commerce/merchant-price.d.cts +8 -8
  120. package/dist/lib/mysql/schemas/commerce/merchant-price.d.ts +8 -8
  121. package/dist/lib/mysql/schemas/commerce/merchant-price.js +1 -1
  122. package/dist/lib/mysql/schemas/commerce/merchant-product.cjs +1 -1
  123. package/dist/lib/mysql/schemas/commerce/merchant-product.cjs.map +1 -1
  124. package/dist/lib/mysql/schemas/commerce/merchant-product.d.cts +7 -7
  125. package/dist/lib/mysql/schemas/commerce/merchant-product.d.ts +7 -7
  126. package/dist/lib/mysql/schemas/commerce/merchant-product.js +1 -1
  127. package/dist/lib/mysql/schemas/commerce/merchant-session.cjs +1 -1
  128. package/dist/lib/mysql/schemas/commerce/merchant-session.cjs.map +1 -1
  129. package/dist/lib/mysql/schemas/commerce/merchant-session.d.cts +4 -4
  130. package/dist/lib/mysql/schemas/commerce/merchant-session.d.ts +4 -4
  131. package/dist/lib/mysql/schemas/commerce/merchant-session.js +1 -1
  132. package/dist/lib/mysql/schemas/commerce/price.cjs +60 -52
  133. package/dist/lib/mysql/schemas/commerce/price.cjs.map +1 -1
  134. package/dist/lib/mysql/schemas/commerce/price.d.cts +11 -11
  135. package/dist/lib/mysql/schemas/commerce/price.d.ts +11 -11
  136. package/dist/lib/mysql/schemas/commerce/price.js +12 -12
  137. package/dist/lib/mysql/schemas/commerce/product.cjs +75 -67
  138. package/dist/lib/mysql/schemas/commerce/product.cjs.map +1 -1
  139. package/dist/lib/mysql/schemas/commerce/product.d.cts +13 -13
  140. package/dist/lib/mysql/schemas/commerce/product.d.ts +13 -13
  141. package/dist/lib/mysql/schemas/commerce/product.js +12 -12
  142. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.cjs +105 -96
  143. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.cjs.map +1 -1
  144. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.d.cts +15 -15
  145. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.d.ts +15 -15
  146. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.js +13 -13
  147. package/dist/lib/mysql/schemas/commerce/purchase.cjs +138 -129
  148. package/dist/lib/mysql/schemas/commerce/purchase.cjs.map +1 -1
  149. package/dist/lib/mysql/schemas/commerce/purchase.d.cts +25 -25
  150. package/dist/lib/mysql/schemas/commerce/purchase.d.ts +25 -25
  151. package/dist/lib/mysql/schemas/commerce/purchase.js +12 -12
  152. package/dist/lib/mysql/schemas/commerce/upgradable-products.cjs +66 -58
  153. package/dist/lib/mysql/schemas/commerce/upgradable-products.cjs.map +1 -1
  154. package/dist/lib/mysql/schemas/commerce/upgradable-products.d.cts +11 -11
  155. package/dist/lib/mysql/schemas/commerce/upgradable-products.d.ts +11 -11
  156. package/dist/lib/mysql/schemas/commerce/upgradable-products.js +13 -13
  157. package/dist/lib/mysql/schemas/communication/comment.cjs +220 -0
  158. package/dist/lib/mysql/schemas/communication/comment.cjs.map +1 -0
  159. package/dist/lib/mysql/schemas/communication/comment.d.cts +100 -0
  160. package/dist/lib/mysql/schemas/communication/comment.d.ts +100 -0
  161. package/dist/lib/mysql/schemas/communication/comment.js +21 -0
  162. package/dist/lib/mysql/schemas/communication/comment.js.map +1 -0
  163. package/dist/lib/mysql/schemas/communication/communication-channel.cjs +1 -1
  164. package/dist/lib/mysql/schemas/communication/communication-channel.cjs.map +1 -1
  165. package/dist/lib/mysql/schemas/communication/communication-channel.d.cts +8 -8
  166. package/dist/lib/mysql/schemas/communication/communication-channel.d.ts +8 -8
  167. package/dist/lib/mysql/schemas/communication/communication-channel.js +1 -1
  168. package/dist/lib/mysql/schemas/communication/communication-preference-types.cjs +1 -1
  169. package/dist/lib/mysql/schemas/communication/communication-preference-types.cjs.map +1 -1
  170. package/dist/lib/mysql/schemas/communication/communication-preference-types.d.cts +8 -8
  171. package/dist/lib/mysql/schemas/communication/communication-preference-types.d.ts +8 -8
  172. package/dist/lib/mysql/schemas/communication/communication-preference-types.js +1 -1
  173. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs +99 -91
  174. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs.map +1 -1
  175. package/dist/lib/mysql/schemas/communication/communication-preferences.d.cts +16 -16
  176. package/dist/lib/mysql/schemas/communication/communication-preferences.d.ts +16 -16
  177. package/dist/lib/mysql/schemas/communication/communication-preferences.js +12 -12
  178. package/dist/lib/mysql/schemas/content/content-contributions.cjs +67 -59
  179. package/dist/lib/mysql/schemas/content/content-contributions.cjs.map +1 -1
  180. package/dist/lib/mysql/schemas/content/content-contributions.d.cts +13 -13
  181. package/dist/lib/mysql/schemas/content/content-contributions.d.ts +13 -13
  182. package/dist/lib/mysql/schemas/content/content-contributions.js +12 -12
  183. package/dist/lib/mysql/schemas/content/content-resource-product.cjs +61 -53
  184. package/dist/lib/mysql/schemas/content/content-resource-product.cjs.map +1 -1
  185. package/dist/lib/mysql/schemas/content/content-resource-product.d.cts +11 -11
  186. package/dist/lib/mysql/schemas/content/content-resource-product.d.ts +11 -11
  187. package/dist/lib/mysql/schemas/content/content-resource-product.js +12 -12
  188. package/dist/lib/mysql/schemas/content/content-resource-resource.cjs +58 -50
  189. package/dist/lib/mysql/schemas/content/content-resource-resource.cjs.map +1 -1
  190. package/dist/lib/mysql/schemas/content/content-resource-resource.d.cts +11 -11
  191. package/dist/lib/mysql/schemas/content/content-resource-resource.d.ts +11 -11
  192. package/dist/lib/mysql/schemas/content/content-resource-resource.js +12 -12
  193. package/dist/lib/mysql/schemas/content/content-resource.cjs +114 -66
  194. package/dist/lib/mysql/schemas/content/content-resource.cjs.map +1 -1
  195. package/dist/lib/mysql/schemas/content/content-resource.d.cts +14 -13
  196. package/dist/lib/mysql/schemas/content/content-resource.d.ts +14 -13
  197. package/dist/lib/mysql/schemas/content/content-resource.js +12 -12
  198. package/dist/lib/mysql/schemas/content/contribution-types.cjs +1 -1
  199. package/dist/lib/mysql/schemas/content/contribution-types.cjs.map +1 -1
  200. package/dist/lib/mysql/schemas/content/contribution-types.d.cts +10 -10
  201. package/dist/lib/mysql/schemas/content/contribution-types.d.ts +10 -10
  202. package/dist/lib/mysql/schemas/content/contribution-types.js +1 -1
  203. package/dist/lib/mysql/schemas/content/lesson-progress.cjs +77 -0
  204. package/dist/lib/mysql/schemas/content/lesson-progress.cjs.map +1 -0
  205. package/dist/lib/mysql/schemas/content/lesson-progress.d.cts +132 -0
  206. package/dist/lib/mysql/schemas/content/lesson-progress.d.ts +132 -0
  207. package/dist/lib/mysql/schemas/content/lesson-progress.js +8 -0
  208. package/dist/lib/mysql/schemas/content/lesson-progress.js.map +1 -0
  209. package/dist/lib/mysql/schemas/content/resource-progress.cjs +7 -7
  210. package/dist/lib/mysql/schemas/content/resource-progress.cjs.map +1 -1
  211. package/dist/lib/mysql/schemas/content/resource-progress.d.cts +9 -9
  212. package/dist/lib/mysql/schemas/content/resource-progress.d.ts +9 -9
  213. package/dist/lib/mysql/schemas/content/resource-progress.js +1 -1
  214. package/package.json +5 -5
  215. package/src/lib/mysql/index.ts +142 -39
  216. package/src/lib/mysql/schemas/auth/accounts.ts +1 -1
  217. package/src/lib/mysql/schemas/auth/device-access-token.ts +40 -0
  218. package/src/lib/mysql/schemas/auth/device-verification.ts +48 -0
  219. package/src/lib/mysql/schemas/auth/permissions.ts +1 -1
  220. package/src/lib/mysql/schemas/auth/role-permissions.ts +1 -1
  221. package/src/lib/mysql/schemas/auth/roles.ts +1 -1
  222. package/src/lib/mysql/schemas/auth/sessions.ts +1 -1
  223. package/src/lib/mysql/schemas/auth/user-permissions.ts +1 -1
  224. package/src/lib/mysql/schemas/auth/user-prefs.ts +52 -0
  225. package/src/lib/mysql/schemas/auth/user-roles.ts +1 -1
  226. package/src/lib/mysql/schemas/auth/users.ts +14 -2
  227. package/src/lib/mysql/schemas/auth/verification-tokens.ts +1 -1
  228. package/src/lib/mysql/schemas/commerce/coupon.ts +1 -4
  229. package/src/lib/mysql/schemas/commerce/merchant-account.ts +1 -1
  230. package/src/lib/mysql/schemas/commerce/merchant-charge.ts +1 -1
  231. package/src/lib/mysql/schemas/commerce/merchant-coupon.ts +1 -1
  232. package/src/lib/mysql/schemas/commerce/merchant-customer.ts +3 -1
  233. package/src/lib/mysql/schemas/commerce/merchant-price.ts +1 -1
  234. package/src/lib/mysql/schemas/commerce/merchant-product.ts +1 -1
  235. package/src/lib/mysql/schemas/commerce/merchant-session.ts +1 -1
  236. package/src/lib/mysql/schemas/commerce/price.ts +1 -1
  237. package/src/lib/mysql/schemas/commerce/product.ts +1 -1
  238. package/src/lib/mysql/schemas/commerce/purchase-user-transfer.ts +1 -1
  239. package/src/lib/mysql/schemas/commerce/purchase.ts +5 -4
  240. package/src/lib/mysql/schemas/commerce/upgradable-products.ts +1 -1
  241. package/src/lib/mysql/schemas/communication/comment.ts +52 -0
  242. package/src/lib/mysql/schemas/communication/communication-channel.ts +1 -1
  243. package/src/lib/mysql/schemas/communication/communication-preference-types.ts +1 -1
  244. package/src/lib/mysql/schemas/communication/communication-preferences.ts +1 -1
  245. package/src/lib/mysql/schemas/content/content-contributions.ts +1 -1
  246. package/src/lib/mysql/schemas/content/content-resource-product.ts +1 -1
  247. package/src/lib/mysql/schemas/content/content-resource-resource.ts +1 -1
  248. package/src/lib/mysql/schemas/content/content-resource.ts +6 -2
  249. package/src/lib/mysql/schemas/content/contribution-types.ts +1 -1
  250. package/src/lib/mysql/schemas/content/lesson-progress.ts +39 -0
  251. package/src/lib/mysql/schemas/content/resource-progress.ts +6 -8
@@ -3,6 +3,7 @@ import { addSeconds, isAfter } from 'date-fns'
3
3
  import {
4
4
  and,
5
5
  asc,
6
+ count,
6
7
  desc,
7
8
  eq,
8
9
  gte,
@@ -52,6 +53,8 @@ import {
52
53
  import {
53
54
  ContentResourceResourceSchema,
54
55
  ContentResourceSchema,
56
+ type ContentResource,
57
+ type ContentResourceResource,
55
58
  } from '@coursebuilder/core/schemas/content-resource-schema'
56
59
  import { merchantAccountSchema } from '@coursebuilder/core/schemas/merchant-account-schema'
57
60
  import { merchantCustomerSchema } from '@coursebuilder/core/schemas/merchant-customer-schema'
@@ -64,6 +67,14 @@ import {
64
67
  getAccountsRelationsSchema,
65
68
  getAccountsSchema,
66
69
  } from './schemas/auth/accounts.js'
70
+ import {
71
+ getDeviceAccessTokenRelationsSchema,
72
+ getDeviceAccessTokenSchema,
73
+ } from './schemas/auth/device-access-token.js'
74
+ import {
75
+ getDeviceVerificationRelationsSchema,
76
+ getDeviceVerificationSchema,
77
+ } from './schemas/auth/device-verification.js'
67
78
  import {
68
79
  getPermissionsRelationsSchema,
69
80
  getPermissionsSchema,
@@ -84,6 +95,10 @@ import {
84
95
  getUserPermissionsRelationsSchema,
85
96
  getUserPermissionsSchema,
86
97
  } from './schemas/auth/user-permissions.js'
98
+ import {
99
+ getUserPrefsRelationsSchema,
100
+ getUserPrefsSchema,
101
+ } from './schemas/auth/user-prefs.js'
87
102
  import {
88
103
  getUserRolesRelationsSchema,
89
104
  getUserRolesSchema,
@@ -124,6 +139,10 @@ import {
124
139
  getUpgradableProductsRelationsSchema,
125
140
  getUpgradableProductsSchema,
126
141
  } from './schemas/commerce/upgradable-products.js'
142
+ import {
143
+ getCommentRelationsSchema,
144
+ getCommentsSchema,
145
+ } from './schemas/communication/comment.js'
127
146
  import { getCommunicationChannelSchema } from './schemas/communication/communication-channel.js'
128
147
  import { getCommunicationPreferenceTypesSchema } from './schemas/communication/communication-preference-types.js'
129
148
  import {
@@ -150,6 +169,7 @@ import {
150
169
  getContributionTypesRelationsSchema,
151
170
  getContributionTypesSchema,
152
171
  } from './schemas/content/contribution-types.js'
172
+ import { getLessonProgressSchema } from './schemas/content/lesson-progress.js'
153
173
  import { getResourceProgressSchema } from './schemas/content/resource-progress.js'
154
174
 
155
175
  export function getCourseBuilderSchema(mysqlTable: MySqlTableFn) {
@@ -173,6 +193,7 @@ export function getCourseBuilderSchema(mysqlTable: MySqlTableFn) {
173
193
  verificationTokens: getVerificationTokensSchema(mysqlTable),
174
194
  coupon: getCouponSchema(mysqlTable),
175
195
  couponRelations: getCouponRelationsSchema(mysqlTable),
196
+ lessonProgress: getLessonProgressSchema(mysqlTable),
176
197
  merchantAccount: getMerchantAccountSchema(mysqlTable),
177
198
  merchantCharge: getMerchantChargeSchema(mysqlTable),
178
199
  merchantChargeRelations: getMerchantChargeRelationsSchema(mysqlTable),
@@ -212,6 +233,15 @@ export function getCourseBuilderSchema(mysqlTable: MySqlTableFn) {
212
233
  contentResourceProductRelations:
213
234
  getContentResourceProductRelationsSchema(mysqlTable),
214
235
  productRelations: getProductRelationsSchema(mysqlTable),
236
+ comments: getCommentsSchema(mysqlTable),
237
+ commentsRelations: getCommentRelationsSchema(mysqlTable),
238
+ deviceVerifications: getDeviceVerificationSchema(mysqlTable),
239
+ deviceVerificationRelations:
240
+ getDeviceVerificationRelationsSchema(mysqlTable),
241
+ deviceAccessToken: getDeviceAccessTokenSchema(mysqlTable),
242
+ deviceAccessTokenRelations: getDeviceAccessTokenRelationsSchema(mysqlTable),
243
+ userPrefs: getUserPrefsSchema(mysqlTable),
244
+ userPrefsRelations: getUserPrefsRelationsSchema(mysqlTable),
215
245
  } as const
216
246
  }
217
247
 
@@ -246,6 +276,7 @@ export function mySqlDrizzleAdapter(
246
276
  products,
247
277
  upgradableProducts,
248
278
  resourceProgress,
279
+ comments,
249
280
  } = createTables(tableFn)
250
281
 
251
282
  const adapter: CourseBuilderAdapter = {
@@ -461,7 +492,7 @@ export function mySqlDrizzleAdapter(
461
492
  let lessonProgress = await client.query.resourceProgress.findFirst({
462
493
  where: and(
463
494
  eq(resourceProgress.userId, options.userId),
464
- eq(resourceProgress.contentResourceId, options.lessonId),
495
+ eq(resourceProgress.resourceId, options.lessonId),
465
496
  ),
466
497
  })
467
498
 
@@ -475,12 +506,12 @@ export function mySqlDrizzleAdapter(
475
506
  completedAt: now,
476
507
  updatedAt: now,
477
508
  })
478
- .where(eq(resourceProgress.contentResourceId, options.lessonId))
509
+ .where(eq(resourceProgress.resourceId, options.lessonId))
479
510
  }
480
511
  } else {
481
512
  await client.insert(resourceProgress).values({
482
513
  userId: options.userId,
483
- contentResourceId: options.lessonId,
514
+ resourceId: options.lessonId,
484
515
  completedAt: now,
485
516
  updatedAt: now,
486
517
  })
@@ -488,7 +519,7 @@ export function mySqlDrizzleAdapter(
488
519
  lessonProgress = await client.query.resourceProgress.findFirst({
489
520
  where: and(
490
521
  eq(resourceProgress.userId, options.userId),
491
- eq(resourceProgress.contentResourceId, options.lessonId),
522
+ eq(resourceProgress.resourceId, options.lessonId),
492
523
  ),
493
524
  })
494
525
  const parsedLessonProgress =
@@ -530,11 +561,21 @@ export function mySqlDrizzleAdapter(
530
561
 
531
562
  if (!couponForIdOrCode) return null
532
563
 
533
- return couponSchema
564
+ const parsedCoupon = couponSchema
534
565
  .extend({
535
566
  merchantCoupon: merchantCouponSchema,
536
567
  })
537
- .parse(couponForIdOrCode)
568
+ .safeParse(couponForIdOrCode)
569
+
570
+ if (!parsedCoupon.success) {
571
+ console.error(
572
+ 'Error parsing coupon',
573
+ JSON.stringify(parsedCoupon.error),
574
+ )
575
+ return null
576
+ }
577
+
578
+ return parsedCoupon.data
538
579
  },
539
580
  async createMerchantChargeAndPurchase(options): Promise<Purchase> {
540
581
  const purchaseId = await client.transaction(async (trx) => {
@@ -620,7 +661,7 @@ export function mySqlDrizzleAdapter(
620
661
  ),
621
662
  )
622
663
  .then((res) => {
623
- return res[0]?.coupons ?? null
664
+ return res[0]?.Coupon ?? null
624
665
  }),
625
666
  )
626
667
 
@@ -942,6 +983,9 @@ export function mySqlDrizzleAdapter(
942
983
  userIdOrEmail: string,
943
984
  moduleIdOrSlug: string,
944
985
  ): Promise<ModuleProgress> {
986
+ const ALLOWED_MODULE_RESOURCE_TYPES = ['lesson', 'exercise', 'solution']
987
+ const COUNTABLE_MODULE_RESOURCE_TYPES = ['lesson', 'exercise']
988
+
945
989
  const module = await client.query.contentResource.findFirst({
946
990
  where: or(
947
991
  eq(contentResource.id, moduleIdOrSlug),
@@ -952,6 +996,26 @@ export function mySqlDrizzleAdapter(
952
996
  ),
953
997
  with: {
954
998
  resources: {
999
+ with: {
1000
+ resource: {
1001
+ with: {
1002
+ resources: {
1003
+ with: {
1004
+ resource: {
1005
+ with: {
1006
+ resources: {
1007
+ with: {
1008
+ resource: true,
1009
+ },
1010
+ },
1011
+ },
1012
+ },
1013
+ },
1014
+ orderBy: asc(contentResourceResource.position),
1015
+ },
1016
+ },
1017
+ },
1018
+ },
955
1019
  orderBy: asc(contentResourceResource.position),
956
1020
  },
957
1021
  },
@@ -959,24 +1023,37 @@ export function mySqlDrizzleAdapter(
959
1023
 
960
1024
  const parsedModule = ContentResourceSchema.parse(module)
961
1025
 
962
- const moduleResources =
963
- await client.query.contentResourceResource.findMany({
964
- where: inArray(
965
- contentResourceResource.resourceOfId,
966
- parsedModule.resources?.map((r) => r.resourceId) ?? [],
967
- ),
968
- orderBy: asc(contentResourceResource.position),
969
- })
1026
+ function flattenResources(
1027
+ resources: ContentResourceResource[],
1028
+ ): ContentResource[] {
1029
+ const result: ContentResource[] = []
1030
+
1031
+ function recurse(resources: ContentResourceResource[]) {
1032
+ for (const nestedResource of resources) {
1033
+ const resource = nestedResource.resource
1034
+ result.push(resource)
1035
+ if (resource.resources) {
1036
+ recurse(resource.resources)
1037
+ }
1038
+ }
1039
+ }
970
1040
 
971
- const parsedModuleResources = z
972
- .array(ContentResourceResourceSchema)
973
- .safeParse(moduleResources)
1041
+ recurse(resources)
1042
+ return result
1043
+ }
974
1044
 
975
- if (!parsedModuleResources.success) {
976
- console.error(
977
- 'Error parsing module resources',
978
- parsedModuleResources.error,
979
- )
1045
+ const allResources =
1046
+ parsedModule?.resources && flattenResources(parsedModule.resources)
1047
+ const filteredResources = allResources?.filter((resource) => {
1048
+ return ALLOWED_MODULE_RESOURCE_TYPES.includes(resource.type)
1049
+ })
1050
+
1051
+ const parsedResources = z
1052
+ .array(ContentResourceSchema)
1053
+ .safeParse(filteredResources)
1054
+
1055
+ if (!parsedResources.success) {
1056
+ console.error('Error parsing module resources', parsedResources.error)
980
1057
  return {
981
1058
  completedLessons: [],
982
1059
  nextResource: null,
@@ -986,6 +1063,12 @@ export function mySqlDrizzleAdapter(
986
1063
  }
987
1064
  }
988
1065
 
1066
+ const progressResources = parsedResources.data.filter((r) => {
1067
+ return COUNTABLE_MODULE_RESOURCE_TYPES.includes(r.type)
1068
+ })
1069
+
1070
+ const totalLessonsCount = progressResources.length
1071
+
989
1072
  const user = await client.query.users
990
1073
  .findFirst({
991
1074
  where: or(
@@ -1016,7 +1099,7 @@ export function mySqlDrizzleAdapter(
1016
1099
  nextResource: null,
1017
1100
  percentCompleted: 0,
1018
1101
  completedLessonsCount: 0,
1019
- totalLessonsCount: parsedModuleResources.data.length,
1102
+ totalLessonsCount,
1020
1103
  }
1021
1104
  }
1022
1105
 
@@ -1029,7 +1112,7 @@ export function mySqlDrizzleAdapter(
1029
1112
  nextResource: null,
1030
1113
  percentCompleted: 0,
1031
1114
  completedLessonsCount: 0,
1032
- totalLessonsCount: parsedModuleResources.data.length,
1115
+ totalLessonsCount,
1033
1116
  }
1034
1117
  }
1035
1118
 
@@ -1038,16 +1121,18 @@ export function mySqlDrizzleAdapter(
1038
1121
  eq(resourceProgress.userId, parsedUser.data.id),
1039
1122
  isNotNull(resourceProgress.completedAt),
1040
1123
  inArray(
1041
- resourceProgress.contentResourceId,
1042
- parsedModuleResources.data.map((r) => r.resourceId),
1124
+ resourceProgress.resourceId,
1125
+ progressResources.map((r) => r.id),
1043
1126
  ),
1044
1127
  ),
1045
1128
  orderBy: asc(resourceProgress.completedAt),
1046
1129
  })
1047
1130
 
1048
- const nextResourceId = moduleResources.find(
1049
- (r) => !userProgress.find((p) => p.contentResourceId === r.resourceId),
1050
- )?.resourceId
1131
+ const nextResourceId = parsedResources.data
1132
+ .filter((r) => {
1133
+ return COUNTABLE_MODULE_RESOURCE_TYPES.includes(r.type)
1134
+ })
1135
+ .find((r) => !userProgress.find((p) => p.resourceId === r.id))?.id
1051
1136
 
1052
1137
  const nextResource = await client.query.contentResource.findFirst({
1053
1138
  where: eq(contentResource.id, nextResourceId as string),
@@ -1068,11 +1153,11 @@ export function mySqlDrizzleAdapter(
1068
1153
  nextResource: null,
1069
1154
  percentCompleted: 0,
1070
1155
  completedLessonsCount: 0,
1071
- totalLessonsCount: parsedModuleResources.data.length,
1156
+ totalLessonsCount,
1072
1157
  }
1073
1158
  }
1074
1159
  const percentCompleted = Math.round(
1075
- (parsedProgress.data.length / parsedModuleResources.data.length) * 100,
1160
+ (parsedProgress.data.length / parsedResources.data.length) * 100,
1076
1161
  )
1077
1162
 
1078
1163
  return {
@@ -1080,7 +1165,7 @@ export function mySqlDrizzleAdapter(
1080
1165
  nextResource: parsedNextResource,
1081
1166
  percentCompleted,
1082
1167
  completedLessonsCount: parsedProgress.data.length,
1083
- totalLessonsCount: parsedModuleResources.data.length,
1168
+ totalLessonsCount,
1084
1169
  }
1085
1170
  },
1086
1171
  getLessonProgresses(): Promise<ResourceProgress[]> {
@@ -1180,6 +1265,16 @@ export function mySqlDrizzleAdapter(
1180
1265
  }),
1181
1266
  )
1182
1267
  },
1268
+ async getPurchaseCountForProduct(productId: string): Promise<number> {
1269
+ return await client.query.purchases
1270
+ .findMany({
1271
+ where: and(
1272
+ eq(purchaseTable.productId, productId),
1273
+ inArray(purchaseTable.status, ['Valid', 'Restricted']),
1274
+ ),
1275
+ })
1276
+ .then((res) => res.length)
1277
+ },
1183
1278
  async getPurchase(purchaseId: string): Promise<Purchase | null> {
1184
1279
  const purchase = await client.query.purchases.findFirst({
1185
1280
  where: eq(purchaseTable.id, purchaseId),
@@ -1497,7 +1592,7 @@ export function mySqlDrizzleAdapter(
1497
1592
  let lessonProgress = await client.query.resourceProgress.findFirst({
1498
1593
  where: and(
1499
1594
  eq(resourceProgress.userId, options.userId),
1500
- eq(resourceProgress.contentResourceId, options.lessonId),
1595
+ eq(resourceProgress.resourceId, options.lessonId),
1501
1596
  ),
1502
1597
  })
1503
1598
 
@@ -1510,11 +1605,11 @@ export function mySqlDrizzleAdapter(
1510
1605
  completedAt: lessonProgress.completedAt ? null : now,
1511
1606
  updatedAt: now,
1512
1607
  })
1513
- .where(eq(resourceProgress.contentResourceId, options.lessonId))
1608
+ .where(eq(resourceProgress.resourceId, options.lessonId))
1514
1609
  } else {
1515
1610
  await client.insert(resourceProgress).values({
1516
1611
  userId: options.userId,
1517
- contentResourceId: options.lessonId,
1612
+ resourceId: options.lessonId,
1518
1613
  completedAt: now,
1519
1614
  updatedAt: now,
1520
1615
  })
@@ -1523,7 +1618,7 @@ export function mySqlDrizzleAdapter(
1523
1618
  lessonProgress = await client.query.resourceProgress.findFirst({
1524
1619
  where: and(
1525
1620
  eq(resourceProgress.userId, options.userId),
1526
- eq(resourceProgress.contentResourceId, options.lessonId),
1621
+ eq(resourceProgress.resourceId, options.lessonId),
1527
1622
  ),
1528
1623
  })
1529
1624
 
@@ -1741,7 +1836,15 @@ export function mySqlDrizzleAdapter(
1741
1836
  with: {
1742
1837
  resources: {
1743
1838
  with: {
1744
- resource: true,
1839
+ resource: {
1840
+ with: {
1841
+ resources: {
1842
+ with: {
1843
+ resource: true,
1844
+ },
1845
+ },
1846
+ },
1847
+ },
1745
1848
  },
1746
1849
  orderBy: asc(contentResourceResource.position),
1747
1850
  },
@@ -1864,7 +1967,7 @@ export function mySqlDrizzleAdapter(
1864
1967
  return null
1865
1968
  }
1866
1969
 
1867
- return dbAccount.user
1970
+ return dbAccount.User
1868
1971
  },
1869
1972
  async deleteSession(sessionToken) {
1870
1973
  const session =
@@ -13,7 +13,7 @@ import { getUsersSchema } from './users.js'
13
13
 
14
14
  export function getAccountsSchema(mysqlTable: MySqlTableFn) {
15
15
  return mysqlTable(
16
- 'account',
16
+ 'Account',
17
17
  {
18
18
  userId: varchar('userId', { length: 255 }).notNull(),
19
19
  type: varchar('type', { length: 255 })
@@ -0,0 +1,40 @@
1
+ import { relations, sql } from 'drizzle-orm'
2
+ import {
3
+ index,
4
+ MySqlTableFn,
5
+ primaryKey,
6
+ timestamp,
7
+ varchar,
8
+ } from 'drizzle-orm/mysql-core'
9
+
10
+ import { getUsersSchema } from './users.js'
11
+
12
+ export function getDeviceAccessTokenSchema(mysqlTable: MySqlTableFn) {
13
+ return mysqlTable(
14
+ 'DeviceAccessToken',
15
+ {
16
+ token: varchar('token', { length: 191 }).notNull(),
17
+ userId: varchar('userId', { length: 191 }).notNull(),
18
+ createdAt: timestamp('createdAt', {
19
+ mode: 'date',
20
+ fsp: 3,
21
+ }).default(sql`CURRENT_TIMESTAMP(3)`),
22
+ },
23
+ (crr) => ({
24
+ pk: primaryKey({ columns: [crr.token] }),
25
+ userIdIdx: index('userId_idx').on(crr.userId),
26
+ }),
27
+ )
28
+ }
29
+
30
+ export function getDeviceAccessTokenRelationsSchema(mysqlTable: MySqlTableFn) {
31
+ const deviceAccessToken = getDeviceAccessTokenSchema(mysqlTable)
32
+ const user = getUsersSchema(mysqlTable)
33
+ return relations(deviceAccessToken, ({ one }) => ({
34
+ verifiedBy: one(user, {
35
+ fields: [deviceAccessToken.userId],
36
+ references: [user.id],
37
+ relationName: 'user',
38
+ }),
39
+ }))
40
+ }
@@ -0,0 +1,48 @@
1
+ import { relations, sql } from 'drizzle-orm'
2
+ import {
3
+ MySqlTableFn,
4
+ primaryKey,
5
+ text,
6
+ timestamp,
7
+ varchar,
8
+ } from 'drizzle-orm/mysql-core'
9
+
10
+ import { getUsersSchema } from './users.js'
11
+
12
+ export function getDeviceVerificationSchema(mysqlTable: MySqlTableFn) {
13
+ return mysqlTable(
14
+ 'DeviceVerification',
15
+ {
16
+ verifiedByUserId: varchar('verifiedByUserId', { length: 255 }),
17
+ deviceCode: varchar('deviceCode', { length: 191 }).notNull(),
18
+ userCode: text('userCode').notNull(),
19
+ expires: timestamp('expires', {
20
+ mode: 'date',
21
+ fsp: 3,
22
+ }).notNull(),
23
+ createdAt: timestamp('createdAt', {
24
+ mode: 'date',
25
+ fsp: 3,
26
+ }).default(sql`CURRENT_TIMESTAMP(3)`),
27
+ verifiedAt: timestamp('verifiedAt', {
28
+ mode: 'date',
29
+ fsp: 3,
30
+ }),
31
+ },
32
+ (crr) => ({
33
+ pk: primaryKey({ columns: [crr.deviceCode] }),
34
+ }),
35
+ )
36
+ }
37
+
38
+ export function getDeviceVerificationRelationsSchema(mysqlTable: MySqlTableFn) {
39
+ const deviceVerification = getDeviceVerificationSchema(mysqlTable)
40
+ const user = getUsersSchema(mysqlTable)
41
+ return relations(deviceVerification, ({ one }) => ({
42
+ verifiedBy: one(user, {
43
+ fields: [deviceVerification.verifiedByUserId],
44
+ references: [user.id],
45
+ relationName: 'user',
46
+ }),
47
+ }))
48
+ }
@@ -12,7 +12,7 @@ import { getRolePermissionsSchema } from './role-permissions.js'
12
12
 
13
13
  export function getPermissionsSchema(mysqlTable: MySqlTableFn) {
14
14
  return mysqlTable(
15
- 'permission',
15
+ 'Permission',
16
16
  {
17
17
  id: varchar('id', { length: 255 }).notNull().primaryKey(),
18
18
  name: varchar('name', { length: 255 }).notNull().unique(),
@@ -13,7 +13,7 @@ import { getRolesSchema } from './roles.js'
13
13
 
14
14
  export function getRolePermissionsSchema(mysqlTable: MySqlTableFn) {
15
15
  return mysqlTable(
16
- 'rolePermission',
16
+ 'RolePermission',
17
17
  {
18
18
  roleId: varchar('roleId', { length: 255 }).notNull(),
19
19
  permissionId: varchar('permissionId', { length: 255 }).notNull(),
@@ -12,7 +12,7 @@ import { getUserRolesSchema } from './user-roles.js'
12
12
 
13
13
  export function getRolesSchema(mysqlTable: MySqlTableFn) {
14
14
  return mysqlTable(
15
- 'role',
15
+ 'Role',
16
16
  {
17
17
  id: varchar('id', { length: 255 }).notNull().primaryKey(),
18
18
  name: varchar('name', { length: 255 }).notNull().unique(),
@@ -5,7 +5,7 @@ import { getUsersSchema } from './users.js'
5
5
 
6
6
  export function getSessionsSchema(mysqlTable: MySqlTableFn) {
7
7
  return mysqlTable(
8
- 'session',
8
+ 'Session',
9
9
  {
10
10
  sessionToken: varchar('sessionToken', { length: 255 })
11
11
  .notNull()
@@ -13,7 +13,7 @@ import { getUsersSchema } from './users.js'
13
13
 
14
14
  export function getUserPermissionsSchema(mysqlTable: MySqlTableFn) {
15
15
  return mysqlTable(
16
- 'userPermission',
16
+ 'UserPermission',
17
17
  {
18
18
  userId: varchar('userId', { length: 255 }).notNull(),
19
19
  permissionId: varchar('permissionId', { length: 255 }).notNull(),
@@ -0,0 +1,52 @@
1
+ import { relations, sql } from 'drizzle-orm'
2
+ import {
3
+ index,
4
+ json,
5
+ MySqlTableFn,
6
+ primaryKey,
7
+ text,
8
+ timestamp,
9
+ varchar,
10
+ } from 'drizzle-orm/mysql-core'
11
+
12
+ import { getUsersSchema } from '../auth/users.js'
13
+
14
+ export function getUserPrefsSchema(mysqlTable: MySqlTableFn) {
15
+ return mysqlTable(
16
+ 'UserPrefs',
17
+ {
18
+ id: varchar('id', { length: 191 }).notNull(),
19
+ type: varchar('type', { length: 191 }).default('Global').notNull(),
20
+ userId: varchar('userId', { length: 255 }).notNull(),
21
+ fields: json('fields').$type<Record<string, any>>().default({}),
22
+ createdAt: timestamp('createdAt', {
23
+ mode: 'date',
24
+ fsp: 3,
25
+ }).default(sql`CURRENT_TIMESTAMP(3)`),
26
+ updatedAt: timestamp('updatedAt', {
27
+ mode: 'date',
28
+ fsp: 3,
29
+ }).default(sql`CURRENT_TIMESTAMP(3)`),
30
+ deletedAt: timestamp('deletedAt', {
31
+ mode: 'date',
32
+ fsp: 3,
33
+ }),
34
+ },
35
+ (crr) => ({
36
+ pk: primaryKey({ columns: [crr.id] }),
37
+ crrUserIdIdKey: index('crr_userIdId_idx').on(crr.userId),
38
+ }),
39
+ )
40
+ }
41
+
42
+ export function getUserPrefsRelationsSchema(mysqlTable: MySqlTableFn) {
43
+ const userPrefs = getUserPrefsSchema(mysqlTable)
44
+ const user = getUsersSchema(mysqlTable)
45
+ return relations(userPrefs, ({ one }) => ({
46
+ user: one(user, {
47
+ fields: [userPrefs.userId],
48
+ references: [user.id],
49
+ relationName: 'user',
50
+ }),
51
+ }))
52
+ }
@@ -13,7 +13,7 @@ import { getUsersSchema } from './users.js'
13
13
 
14
14
  export function getUserRolesSchema(mysqlTable: MySqlTableFn) {
15
15
  return mysqlTable(
16
- 'userRole',
16
+ 'UserRole',
17
17
  {
18
18
  userId: varchar('userId', { length: 255 }).notNull(),
19
19
  roleId: varchar('roleId', { length: 255 }).notNull(),
@@ -1,6 +1,7 @@
1
1
  import { relations, sql } from 'drizzle-orm'
2
2
  import {
3
3
  index,
4
+ json,
4
5
  mysqlEnum,
5
6
  MySqlTableFn,
6
7
  timestamp,
@@ -8,21 +9,24 @@ import {
8
9
  } from 'drizzle-orm/mysql-core'
9
10
 
10
11
  import { getPurchaseSchema } from '../commerce/purchase.js'
12
+ import { getCommentsSchema } from '../communication/comment.js'
11
13
  import { getCommunicationPreferencesSchema } from '../communication/communication-preferences.js'
12
14
  import { getContentContributionsSchema } from '../content/content-contributions.js'
13
15
  import { getContentResourceSchema } from '../content/content-resource.js'
14
16
  import { getAccountsSchema } from './accounts.js'
15
17
  import { getUserPermissionsSchema } from './user-permissions.js'
18
+ import { getUserPrefsSchema } from './user-prefs.js'
16
19
  import { getUserRolesSchema } from './user-roles.js'
17
20
 
18
21
  export function getUsersSchema(mysqlTable: MySqlTableFn) {
19
22
  return mysqlTable(
20
- 'user',
23
+ 'User',
21
24
  {
22
25
  id: varchar('id', { length: 255 }).notNull().primaryKey(),
23
26
  name: varchar('name', { length: 255 }),
24
- role: mysqlEnum('role', ['user', 'admin']).default('user'),
27
+ role: varchar('role', { length: 191 }).notNull().default('user'),
25
28
  email: varchar('email', { length: 255 }).notNull().unique(),
29
+ fields: json('fields').$type<Record<string, any>>().default({}),
26
30
  emailVerified: timestamp('emailVerified', {
27
31
  mode: 'date',
28
32
  fsp: 3,
@@ -50,6 +54,8 @@ export function getUsersRelationsSchema(mysqlTable: MySqlTableFn) {
50
54
  const contentContributions = getContentContributionsSchema(mysqlTable)
51
55
  const contentResource = getContentResourceSchema(mysqlTable)
52
56
  const purchases = getPurchaseSchema(mysqlTable)
57
+ const comments = getCommentsSchema(mysqlTable)
58
+ const userPrefs = getUserPrefsSchema(mysqlTable)
53
59
  return relations(users, ({ many }) => ({
54
60
  accounts: many(accounts, {
55
61
  relationName: 'user',
@@ -72,5 +78,11 @@ export function getUsersRelationsSchema(mysqlTable: MySqlTableFn) {
72
78
  createdContent: many(contentResource, {
73
79
  relationName: 'user',
74
80
  }),
81
+ comments: many(comments, {
82
+ relationName: 'user',
83
+ }),
84
+ prefs: many(userPrefs, {
85
+ relationName: 'user',
86
+ }),
75
87
  }))
76
88
  }
@@ -7,7 +7,7 @@ import {
7
7
 
8
8
  export function getVerificationTokensSchema(mysqlTable: MySqlTableFn) {
9
9
  return mysqlTable(
10
- 'verificationToken',
10
+ 'VerificationToken',
11
11
  {
12
12
  identifier: varchar('identifier', { length: 255 }).notNull(),
13
13
  token: varchar('token', { length: 255 }).notNull(),