@coursebuilder/adapter-drizzle 0.0.3 → 0.0.5

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 (239) hide show
  1. package/dist/chunk-6CBAFOL3.js +38 -0
  2. package/dist/chunk-AIDEJDKJ.js +44 -0
  3. package/dist/chunk-BRGTUNY2.js +78 -0
  4. package/dist/chunk-H4MXNDWO.js +34 -0
  5. package/dist/chunk-ICL7XZ2Y.js +50 -0
  6. package/dist/chunk-JD4KFACE.js +43 -0
  7. package/dist/chunk-JQFZOCAU.js +4099 -0
  8. package/dist/chunk-KI47TR7F.js +47 -0
  9. package/dist/chunk-KVN3JV7C.js +60 -0
  10. package/dist/chunk-LLWSIKQV.js +18 -0
  11. package/dist/chunk-MBQ3TMHH.js +44 -0
  12. package/dist/chunk-NISOQSUL.js +47 -0
  13. package/dist/chunk-PUGK2AEH.js +746 -0
  14. package/dist/chunk-RMRO5TA7.js +228 -0
  15. package/dist/chunk-SFJM6FKE.js +36 -0
  16. package/dist/chunk-SQR6UWVO.js +225 -0
  17. package/dist/chunk-TA6VLEV5.js +45 -0
  18. package/dist/chunk-TMQIGK3N.js +36 -0
  19. package/dist/chunk-US2EXVMI.js +42 -0
  20. package/dist/chunk-UY3DVPP3.js +48 -0
  21. package/dist/chunk-VEFCDI73.js +67 -0
  22. package/dist/chunk-VNI36MMC.js +7 -0
  23. package/dist/chunk-VZABQCFH.js +40 -0
  24. package/dist/index.d.ts +15 -0
  25. package/dist/index.js +54 -0
  26. package/dist/lib/mysql/index.cjs +5414 -0
  27. package/dist/lib/mysql/index.cjs.map +1 -0
  28. package/dist/lib/mysql/index.d.ts +5713 -0
  29. package/dist/lib/mysql/index.js +30 -0
  30. package/dist/lib/mysql/index.js.map +1 -0
  31. package/dist/lib/mysql/schemas/auth/accounts.cjs +177 -0
  32. package/dist/lib/mysql/schemas/auth/accounts.cjs.map +1 -0
  33. package/dist/lib/mysql/schemas/auth/accounts.d.ts +184 -0
  34. package/dist/lib/mysql/schemas/auth/accounts.js +12 -0
  35. package/dist/lib/mysql/schemas/auth/accounts.js.map +1 -0
  36. package/dist/lib/mysql/schemas/auth/permissions.cjs +155 -0
  37. package/dist/lib/mysql/schemas/auth/permissions.cjs.map +1 -0
  38. package/dist/lib/mysql/schemas/auth/permissions.d.ts +100 -0
  39. package/dist/lib/mysql/schemas/auth/permissions.js +12 -0
  40. package/dist/lib/mysql/schemas/auth/permissions.js.map +1 -0
  41. package/dist/lib/mysql/schemas/auth/role-permissions.cjs +200 -0
  42. package/dist/lib/mysql/schemas/auth/role-permissions.cjs.map +1 -0
  43. package/dist/lib/mysql/schemas/auth/role-permissions.d.ts +89 -0
  44. package/dist/lib/mysql/schemas/auth/role-permissions.js +12 -0
  45. package/dist/lib/mysql/schemas/auth/role-permissions.js.map +1 -0
  46. package/dist/lib/mysql/schemas/auth/roles.cjs +157 -0
  47. package/dist/lib/mysql/schemas/auth/roles.cjs.map +1 -0
  48. package/dist/lib/mysql/schemas/auth/roles.d.ts +100 -0
  49. package/dist/lib/mysql/schemas/auth/roles.js +12 -0
  50. package/dist/lib/mysql/schemas/auth/roles.js.map +1 -0
  51. package/dist/lib/mysql/schemas/auth/sessions.cjs +156 -0
  52. package/dist/lib/mysql/schemas/auth/sessions.cjs.map +1 -0
  53. package/dist/lib/mysql/schemas/auth/sessions.d.ts +52 -0
  54. package/dist/lib/mysql/schemas/auth/sessions.js +13 -0
  55. package/dist/lib/mysql/schemas/auth/sessions.js.map +1 -0
  56. package/dist/lib/mysql/schemas/auth/user-permissions.cjs +207 -0
  57. package/dist/lib/mysql/schemas/auth/user-permissions.cjs.map +1 -0
  58. package/dist/lib/mysql/schemas/auth/user-permissions.d.ts +89 -0
  59. package/dist/lib/mysql/schemas/auth/user-permissions.js +12 -0
  60. package/dist/lib/mysql/schemas/auth/user-permissions.js.map +1 -0
  61. package/dist/lib/mysql/schemas/auth/user-roles.cjs +205 -0
  62. package/dist/lib/mysql/schemas/auth/user-roles.cjs.map +1 -0
  63. package/dist/lib/mysql/schemas/auth/user-roles.d.ts +89 -0
  64. package/dist/lib/mysql/schemas/auth/user-roles.js +12 -0
  65. package/dist/lib/mysql/schemas/auth/user-roles.js.map +1 -0
  66. package/dist/lib/mysql/schemas/auth/users.cjs +364 -0
  67. package/dist/lib/mysql/schemas/auth/users.cjs.map +1 -0
  68. package/dist/lib/mysql/schemas/auth/users.d.ts +105 -0
  69. package/dist/lib/mysql/schemas/auth/users.js +12 -0
  70. package/dist/lib/mysql/schemas/auth/users.js.map +1 -0
  71. package/dist/lib/mysql/schemas/auth/verification-tokens.cjs +57 -0
  72. package/dist/lib/mysql/schemas/auth/verification-tokens.cjs.map +1 -0
  73. package/dist/lib/mysql/schemas/auth/verification-tokens.d.ts +60 -0
  74. package/dist/lib/mysql/schemas/auth/verification-tokens.js +8 -0
  75. package/dist/lib/mysql/schemas/auth/verification-tokens.js.map +1 -0
  76. package/dist/lib/mysql/schemas/commerce/coupon.cjs +81 -0
  77. package/dist/lib/mysql/schemas/commerce/coupon.cjs.map +1 -0
  78. package/dist/lib/mysql/schemas/commerce/coupon.d.ts +168 -0
  79. package/dist/lib/mysql/schemas/commerce/coupon.js +8 -0
  80. package/dist/lib/mysql/schemas/commerce/coupon.js.map +1 -0
  81. package/dist/lib/mysql/schemas/commerce/merchant-account.cjs +61 -0
  82. package/dist/lib/mysql/schemas/commerce/merchant-account.cjs.map +1 -0
  83. package/dist/lib/mysql/schemas/commerce/merchant-account.d.ts +72 -0
  84. package/dist/lib/mysql/schemas/commerce/merchant-account.js +8 -0
  85. package/dist/lib/mysql/schemas/commerce/merchant-account.js.map +1 -0
  86. package/dist/lib/mysql/schemas/commerce/merchant-charge.cjs +71 -0
  87. package/dist/lib/mysql/schemas/commerce/merchant-charge.cjs.map +1 -0
  88. package/dist/lib/mysql/schemas/commerce/merchant-charge.d.ts +108 -0
  89. package/dist/lib/mysql/schemas/commerce/merchant-charge.js +8 -0
  90. package/dist/lib/mysql/schemas/commerce/merchant-charge.js.map +1 -0
  91. package/dist/lib/mysql/schemas/commerce/merchant-coupon.cjs +64 -0
  92. package/dist/lib/mysql/schemas/commerce/merchant-coupon.cjs.map +1 -0
  93. package/dist/lib/mysql/schemas/commerce/merchant-coupon.d.ts +84 -0
  94. package/dist/lib/mysql/schemas/commerce/merchant-coupon.js +8 -0
  95. package/dist/lib/mysql/schemas/commerce/merchant-coupon.js.map +1 -0
  96. package/dist/lib/mysql/schemas/commerce/merchant-customer.cjs +65 -0
  97. package/dist/lib/mysql/schemas/commerce/merchant-customer.cjs.map +1 -0
  98. package/dist/lib/mysql/schemas/commerce/merchant-customer.d.ts +84 -0
  99. package/dist/lib/mysql/schemas/commerce/merchant-customer.js +8 -0
  100. package/dist/lib/mysql/schemas/commerce/merchant-customer.js.map +1 -0
  101. package/dist/lib/mysql/schemas/commerce/merchant-price.cjs +68 -0
  102. package/dist/lib/mysql/schemas/commerce/merchant-price.cjs.map +1 -0
  103. package/dist/lib/mysql/schemas/commerce/merchant-price.d.ts +96 -0
  104. package/dist/lib/mysql/schemas/commerce/merchant-price.js +8 -0
  105. package/dist/lib/mysql/schemas/commerce/merchant-price.js.map +1 -0
  106. package/dist/lib/mysql/schemas/commerce/merchant-product.cjs +65 -0
  107. package/dist/lib/mysql/schemas/commerce/merchant-product.cjs.map +1 -0
  108. package/dist/lib/mysql/schemas/commerce/merchant-product.d.ts +84 -0
  109. package/dist/lib/mysql/schemas/commerce/merchant-product.js +8 -0
  110. package/dist/lib/mysql/schemas/commerce/merchant-product.js.map +1 -0
  111. package/dist/lib/mysql/schemas/commerce/merchant-session.cjs +55 -0
  112. package/dist/lib/mysql/schemas/commerce/merchant-session.cjs.map +1 -0
  113. package/dist/lib/mysql/schemas/commerce/merchant-session.d.ts +48 -0
  114. package/dist/lib/mysql/schemas/commerce/merchant-session.js +8 -0
  115. package/dist/lib/mysql/schemas/commerce/merchant-session.js.map +1 -0
  116. package/dist/lib/mysql/schemas/commerce/price.cjs +66 -0
  117. package/dist/lib/mysql/schemas/commerce/price.cjs.map +1 -0
  118. package/dist/lib/mysql/schemas/commerce/price.d.ts +96 -0
  119. package/dist/lib/mysql/schemas/commerce/price.js +8 -0
  120. package/dist/lib/mysql/schemas/commerce/price.js.map +1 -0
  121. package/dist/lib/mysql/schemas/commerce/product.cjs +63 -0
  122. package/dist/lib/mysql/schemas/commerce/product.cjs.map +1 -0
  123. package/dist/lib/mysql/schemas/commerce/product.d.ts +96 -0
  124. package/dist/lib/mysql/schemas/commerce/product.js +8 -0
  125. package/dist/lib/mysql/schemas/commerce/product.js.map +1 -0
  126. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.cjs +88 -0
  127. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.cjs.map +1 -0
  128. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.d.ts +132 -0
  129. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.js +8 -0
  130. package/dist/lib/mysql/schemas/commerce/purchase-user-transfer.js.map +1 -0
  131. package/dist/lib/mysql/schemas/commerce/purchase.cjs +99 -0
  132. package/dist/lib/mysql/schemas/commerce/purchase.cjs.map +1 -0
  133. package/dist/lib/mysql/schemas/commerce/purchase.d.ts +216 -0
  134. package/dist/lib/mysql/schemas/commerce/purchase.js +8 -0
  135. package/dist/lib/mysql/schemas/commerce/purchase.js.map +1 -0
  136. package/dist/lib/mysql/schemas/communication/communication-channel.cjs +59 -0
  137. package/dist/lib/mysql/schemas/communication/communication-channel.cjs.map +1 -0
  138. package/dist/lib/mysql/schemas/communication/communication-channel.d.ts +96 -0
  139. package/dist/lib/mysql/schemas/communication/communication-channel.js +8 -0
  140. package/dist/lib/mysql/schemas/communication/communication-channel.js.map +1 -0
  141. package/dist/lib/mysql/schemas/communication/communication-preference-types.cjs +57 -0
  142. package/dist/lib/mysql/schemas/communication/communication-preference-types.cjs.map +1 -0
  143. package/dist/lib/mysql/schemas/communication/communication-preference-types.d.ts +96 -0
  144. package/dist/lib/mysql/schemas/communication/communication-preference-types.js +8 -0
  145. package/dist/lib/mysql/schemas/communication/communication-preference-types.js.map +1 -0
  146. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs +253 -0
  147. package/dist/lib/mysql/schemas/communication/communication-preferences.cjs.map +1 -0
  148. package/dist/lib/mysql/schemas/communication/communication-preferences.d.ts +150 -0
  149. package/dist/lib/mysql/schemas/communication/communication-preferences.js +12 -0
  150. package/dist/lib/mysql/schemas/communication/communication-preferences.js.map +1 -0
  151. package/dist/lib/mysql/schemas/content/content-contributions.cjs +252 -0
  152. package/dist/lib/mysql/schemas/content/content-contributions.cjs.map +1 -0
  153. package/dist/lib/mysql/schemas/content/content-contributions.d.ts +114 -0
  154. package/dist/lib/mysql/schemas/content/content-contributions.js +12 -0
  155. package/dist/lib/mysql/schemas/content/content-contributions.js.map +1 -0
  156. package/dist/lib/mysql/schemas/content/content-resource-resource.cjs +179 -0
  157. package/dist/lib/mysql/schemas/content/content-resource-resource.cjs.map +1 -0
  158. package/dist/lib/mysql/schemas/content/content-resource-resource.d.ts +101 -0
  159. package/dist/lib/mysql/schemas/content/content-resource-resource.js +12 -0
  160. package/dist/lib/mysql/schemas/content/content-resource-resource.js.map +1 -0
  161. package/dist/lib/mysql/schemas/content/content-resource.cjs +246 -0
  162. package/dist/lib/mysql/schemas/content/content-resource.cjs.map +1 -0
  163. package/dist/lib/mysql/schemas/content/content-resource.d.ts +103 -0
  164. package/dist/lib/mysql/schemas/content/content-resource.js +12 -0
  165. package/dist/lib/mysql/schemas/content/content-resource.js.map +1 -0
  166. package/dist/lib/mysql/schemas/content/contribution-types.cjs +162 -0
  167. package/dist/lib/mysql/schemas/content/contribution-types.cjs.map +1 -0
  168. package/dist/lib/mysql/schemas/content/contribution-types.d.ts +112 -0
  169. package/dist/lib/mysql/schemas/content/contribution-types.js +12 -0
  170. package/dist/lib/mysql/schemas/content/contribution-types.js.map +1 -0
  171. package/dist/lib/mysql/schemas/content/resource-progress.cjs +69 -0
  172. package/dist/lib/mysql/schemas/content/resource-progress.cjs.map +1 -0
  173. package/dist/lib/mysql/schemas/content/resource-progress.d.ts +84 -0
  174. package/dist/lib/mysql/schemas/content/resource-progress.js +8 -0
  175. package/dist/lib/mysql/schemas/content/resource-progress.js.map +1 -0
  176. package/dist/lib/pg.cjs +247 -0
  177. package/dist/lib/pg.cjs.map +1 -0
  178. package/{lib → dist/lib}/pg.d.ts +44 -41
  179. package/dist/lib/pg.js +10 -0
  180. package/dist/lib/pg.js.map +1 -0
  181. package/dist/lib/sqlite.cjs +259 -0
  182. package/dist/lib/sqlite.cjs.map +1 -0
  183. package/{lib → dist/lib}/sqlite.d.ts +53 -49
  184. package/dist/lib/sqlite.js +11 -0
  185. package/dist/lib/sqlite.js.map +1 -0
  186. package/dist/lib/utils.cjs +39 -0
  187. package/dist/lib/utils.cjs.map +1 -0
  188. package/dist/lib/utils.d.ts +28 -0
  189. package/dist/lib/utils.js +8 -0
  190. package/dist/lib/utils.js.map +1 -0
  191. package/package.json +20 -11
  192. package/src/index.ts +16 -11
  193. package/src/lib/mysql/index.ts +424 -0
  194. package/src/lib/mysql/schemas/auth/accounts.ts +52 -0
  195. package/src/lib/mysql/schemas/auth/permissions.ts +44 -0
  196. package/src/lib/mysql/schemas/auth/role-permissions.ts +56 -0
  197. package/src/lib/mysql/schemas/auth/roles.ts +46 -0
  198. package/src/lib/mysql/schemas/auth/sessions.ts +28 -0
  199. package/src/lib/mysql/schemas/auth/user-permissions.ts +56 -0
  200. package/src/lib/mysql/schemas/auth/user-roles.ts +56 -0
  201. package/src/lib/mysql/schemas/auth/users.ts +58 -0
  202. package/src/lib/mysql/schemas/auth/verification-tokens.ts +24 -0
  203. package/src/lib/mysql/schemas/commerce/coupon.ts +47 -0
  204. package/src/lib/mysql/schemas/commerce/merchant-account.ts +31 -0
  205. package/src/lib/mysql/schemas/commerce/merchant-charge.ts +44 -0
  206. package/src/lib/mysql/schemas/commerce/merchant-coupon.ts +38 -0
  207. package/src/lib/mysql/schemas/commerce/merchant-customer.ts +38 -0
  208. package/src/lib/mysql/schemas/commerce/merchant-price.ts +41 -0
  209. package/src/lib/mysql/schemas/commerce/merchant-product.ts +38 -0
  210. package/src/lib/mysql/schemas/commerce/merchant-session.ts +22 -0
  211. package/src/lib/mysql/schemas/commerce/price.ts +32 -0
  212. package/src/lib/mysql/schemas/commerce/product.ts +31 -0
  213. package/src/lib/mysql/schemas/commerce/purchase-user-transfer.ts +46 -0
  214. package/src/lib/mysql/schemas/commerce/purchase.ts +48 -0
  215. package/src/lib/mysql/schemas/communication/communication-channel.ts +35 -0
  216. package/src/lib/mysql/schemas/communication/communication-preference-types.ts +30 -0
  217. package/src/lib/mysql/schemas/communication/communication-preferences.ts +78 -0
  218. package/src/lib/mysql/schemas/content/content-contributions.ts +70 -0
  219. package/src/lib/mysql/schemas/content/content-resource-resource.ts +60 -0
  220. package/src/lib/mysql/schemas/content/content-resource.ts +57 -0
  221. package/src/lib/mysql/schemas/content/contribution-types.ts +49 -0
  222. package/src/lib/mysql/schemas/content/resource-progress.ts +38 -0
  223. package/src/lib/pg.ts +272 -252
  224. package/src/lib/sqlite.ts +261 -201
  225. package/src/lib/utils.ts +24 -21
  226. package/index.d.ts +0 -6
  227. package/index.d.ts.map +0 -1
  228. package/index.js +0 -20
  229. package/lib/mysql.d.ts +0 -505
  230. package/lib/mysql.d.ts.map +0 -1
  231. package/lib/mysql.js +0 -319
  232. package/lib/pg.d.ts.map +0 -1
  233. package/lib/pg.js +0 -231
  234. package/lib/sqlite.d.ts.map +0 -1
  235. package/lib/sqlite.js +0 -189
  236. package/lib/utils.d.ts +0 -26
  237. package/lib/utils.d.ts.map +0 -1
  238. package/lib/utils.js +0 -7
  239. package/src/lib/mysql.ts +0 -402
package/src/lib/sqlite.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import type { AdapterAccount } from '@auth/core/adapters'
2
2
  import { and, eq, sql } from 'drizzle-orm'
3
3
  import {
4
- BaseSQLiteDatabase,
5
- sqliteTable as defaultSqliteTableFn,
6
- integer,
7
- primaryKey,
8
- SQLiteTableFn,
9
- text,
4
+ BaseSQLiteDatabase,
5
+ sqliteTable as defaultSqliteTableFn,
6
+ integer,
7
+ primaryKey,
8
+ SQLiteTableFn,
9
+ text,
10
10
  } from 'drizzle-orm/sqlite-core'
11
11
 
12
12
  import { type CourseBuilderAdapter } from '@coursebuilder/core/adapters'
@@ -14,214 +14,274 @@ import { type CourseBuilderAdapter } from '@coursebuilder/core/adapters'
14
14
  import { stripUndefined } from './utils.js'
15
15
 
16
16
  export function createTables(sqliteTable: SQLiteTableFn) {
17
- const users = sqliteTable('user', {
18
- id: text('id').notNull().primaryKey(),
19
- name: text('name'),
20
- role: text('role', { enum: ['user', 'admin'] }).default('user'),
21
- email: text('email').notNull(),
22
- emailVerified: integer('emailVerified', { mode: 'timestamp_ms' }),
23
- image: text('image'),
24
- })
17
+ const users = sqliteTable('user', {
18
+ id: text('id').notNull().primaryKey(),
19
+ name: text('name'),
20
+ role: text('role', { enum: ['user', 'admin'] }).default('user'),
21
+ email: text('email').notNull(),
22
+ emailVerified: integer('emailVerified', { mode: 'timestamp_ms' }),
23
+ image: text('image'),
24
+ })
25
25
 
26
- const accounts = sqliteTable(
27
- 'account',
28
- {
29
- userId: text('userId')
30
- .notNull()
31
- .references(() => users.id, { onDelete: 'cascade' }),
32
- type: text('type').$type<AdapterAccount['type']>().notNull(),
33
- provider: text('provider').notNull(),
34
- providerAccountId: text('providerAccountId').notNull(),
35
- refresh_token: text('refresh_token'),
36
- access_token: text('access_token'),
37
- expires_at: integer('expires_at'),
38
- token_type: text('token_type'),
39
- scope: text('scope'),
40
- id_token: text('id_token'),
41
- session_state: text('session_state'),
42
- },
43
- (account) => ({
44
- pk: primaryKey({ columns: [account.provider, account.providerAccountId] }),
45
- }),
46
- )
26
+ const accounts = sqliteTable(
27
+ 'account',
28
+ {
29
+ userId: text('userId')
30
+ .notNull()
31
+ .references(() => users.id, { onDelete: 'cascade' }),
32
+ type: text('type').$type<AdapterAccount['type']>().notNull(),
33
+ provider: text('provider').notNull(),
34
+ providerAccountId: text('providerAccountId').notNull(),
35
+ refresh_token: text('refresh_token'),
36
+ access_token: text('access_token'),
37
+ expires_at: integer('expires_at'),
38
+ token_type: text('token_type'),
39
+ scope: text('scope'),
40
+ id_token: text('id_token'),
41
+ session_state: text('session_state'),
42
+ },
43
+ (account) => ({
44
+ pk: primaryKey({
45
+ columns: [account.provider, account.providerAccountId],
46
+ }),
47
+ }),
48
+ )
47
49
 
48
- const sessions = sqliteTable('session', {
49
- sessionToken: text('sessionToken').notNull().primaryKey(),
50
- userId: text('userId')
51
- .notNull()
52
- .references(() => users.id, { onDelete: 'cascade' }),
53
- expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
54
- })
50
+ const sessions = sqliteTable('session', {
51
+ sessionToken: text('sessionToken').notNull().primaryKey(),
52
+ userId: text('userId')
53
+ .notNull()
54
+ .references(() => users.id, { onDelete: 'cascade' }),
55
+ expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
56
+ })
55
57
 
56
- const verificationTokens = sqliteTable(
57
- 'verificationToken',
58
- {
59
- identifier: text('identifier').notNull(),
60
- token: text('token').notNull(),
61
- expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
62
- },
63
- (vt) => ({
64
- pk: primaryKey({ columns: [vt.identifier, vt.token] }),
65
- }),
66
- )
58
+ const verificationTokens = sqliteTable(
59
+ 'verificationToken',
60
+ {
61
+ identifier: text('identifier').notNull(),
62
+ token: text('token').notNull(),
63
+ expires: integer('expires', { mode: 'timestamp_ms' }).notNull(),
64
+ },
65
+ (vt) => ({
66
+ pk: primaryKey({ columns: [vt.identifier, vt.token] }),
67
+ }),
68
+ )
67
69
 
68
- const contentResource = sqliteTable('contentResource', {
69
- id: text('id', { length: 255 }).notNull().primaryKey(),
70
- type: text('type', { length: 255 }).notNull(),
71
- createdById: text('createdById', { length: 255 }).notNull(),
72
- fields: text('metadata', { mode: 'json' }).$type<Record<string, any>>().default({}),
73
- createdAt: integer('createdAt', {
74
- mode: 'timestamp_ms',
75
- }).default(sql`CURRENT_TIME`),
76
- updatedAt: integer('updatedAt', {
77
- mode: 'timestamp_ms',
78
- }).default(sql`CURRENT_TIME`),
79
- deletedAt: integer('deletedAt', {
80
- mode: 'timestamp_ms',
81
- }),
82
- })
70
+ const contentResource = sqliteTable('contentResource', {
71
+ id: text('id', { length: 255 }).notNull().primaryKey(),
72
+ type: text('type', { length: 255 }).notNull(),
73
+ createdById: text('createdById', { length: 255 }).notNull(),
74
+ fields: text('metadata', { mode: 'json' })
75
+ .$type<Record<string, any>>()
76
+ .default({}),
77
+ createdAt: integer('createdAt', {
78
+ mode: 'timestamp_ms',
79
+ }).default(sql`CURRENT_TIME`),
80
+ updatedAt: integer('updatedAt', {
81
+ mode: 'timestamp_ms',
82
+ }).default(sql`CURRENT_TIME`),
83
+ deletedAt: integer('deletedAt', {
84
+ mode: 'timestamp_ms',
85
+ }),
86
+ })
83
87
 
84
- const contentResourceResource = sqliteTable(
85
- 'contentResourceResource',
86
- {
87
- resourceOfId: text('resourceOfId', { length: 255 }).notNull(),
88
- resourceId: text('resourceId', { length: 255 }).notNull(),
89
- position: integer('position').notNull().default(0),
90
- metadata: text('metadata', { mode: 'json' }).$type<Record<string, any>>().default({}),
91
- createdAt: integer('createdAt', {
92
- mode: 'timestamp_ms',
93
- }).default(sql`CURRENT_TIME`),
94
- updatedAt: integer('updatedAt', {
95
- mode: 'timestamp_ms',
96
- }).default(sql`CURRENT_TIME`),
97
- deletedAt: integer('deletedAt', {
98
- mode: 'timestamp_ms',
99
- }),
100
- },
101
- (crr) => ({
102
- pk: primaryKey({ columns: [crr.resourceOfId, crr.resourceId] }),
103
- }),
104
- )
88
+ const contentResourceResource = sqliteTable(
89
+ 'contentResourceResource',
90
+ {
91
+ resourceOfId: text('resourceOfId', { length: 255 }).notNull(),
92
+ resourceId: text('resourceId', { length: 255 }).notNull(),
93
+ position: integer('position').notNull().default(0),
94
+ metadata: text('metadata', { mode: 'json' })
95
+ .$type<Record<string, any>>()
96
+ .default({}),
97
+ createdAt: integer('createdAt', {
98
+ mode: 'timestamp_ms',
99
+ }).default(sql`CURRENT_TIME`),
100
+ updatedAt: integer('updatedAt', {
101
+ mode: 'timestamp_ms',
102
+ }).default(sql`CURRENT_TIME`),
103
+ deletedAt: integer('deletedAt', {
104
+ mode: 'timestamp_ms',
105
+ }),
106
+ },
107
+ (crr) => ({
108
+ pk: primaryKey({ columns: [crr.resourceOfId, crr.resourceId] }),
109
+ }),
110
+ )
105
111
 
106
- return { users, accounts, sessions, verificationTokens, contentResource, contentResourceResource }
112
+ return {
113
+ users,
114
+ accounts,
115
+ sessions,
116
+ verificationTokens,
117
+ contentResource,
118
+ contentResourceResource,
119
+ }
107
120
  }
108
121
 
109
122
  export type DefaultSchema = ReturnType<typeof createTables>
110
123
 
111
124
  export function SQLiteDrizzleAdapter(
112
- client: InstanceType<typeof BaseSQLiteDatabase>,
113
- tableFn = defaultSqliteTableFn,
125
+ client: InstanceType<typeof BaseSQLiteDatabase>,
126
+ tableFn = defaultSqliteTableFn,
114
127
  ): CourseBuilderAdapter {
115
- const { users, accounts, sessions, verificationTokens, contentResource } = createTables(tableFn)
128
+ const { users, accounts, sessions, verificationTokens, contentResource } =
129
+ createTables(tableFn)
116
130
 
117
- return {
118
- async updateContentResourceFields(options) {
119
- return null
120
- },
121
- async getVideoResource(id) {
122
- // TODO Implement
123
- return null
124
- },
125
- async createContentResource(resource) {
126
- return client
127
- .insert(contentResource)
128
- .values({ ...resource, id: crypto.randomUUID() })
129
- .returning()
130
- .get()
131
- },
132
- async getContentResource(data) {
133
- const result = await client.select().from(contentResource).where(eq(contentResource.id, data)).get()
134
- return result ?? null
135
- },
136
- async createUser(data) {
137
- return client
138
- .insert(users)
139
- .values({ ...data, id: crypto.randomUUID() })
140
- .returning()
141
- .get()
142
- },
143
- async getUser(data) {
144
- const result = await client.select().from(users).where(eq(users.id, data)).get()
145
- return result ?? null
146
- },
147
- async getUserByEmail(data) {
148
- const result = await client.select().from(users).where(eq(users.email, data)).get()
149
- return result ?? null
150
- },
151
- createSession(data) {
152
- return client.insert(sessions).values(data).returning().get()
153
- },
154
- async getSessionAndUser(data) {
155
- const result = await client
156
- .select({ session: sessions, user: users })
157
- .from(sessions)
158
- .where(eq(sessions.sessionToken, data))
159
- .innerJoin(users, eq(users.id, sessions.userId))
160
- .get()
161
- return result ?? null
162
- },
163
- async updateUser(data) {
164
- if (!data.id) {
165
- throw new Error('No user id.')
166
- }
131
+ return {
132
+ async updateContentResourceFields(options) {
133
+ return null
134
+ },
135
+ async getVideoResource(id) {
136
+ // TODO Implement
137
+ return null
138
+ },
139
+ async createContentResource(resource) {
140
+ return client
141
+ .insert(contentResource)
142
+ .values({ ...resource, id: crypto.randomUUID() })
143
+ .returning()
144
+ .get()
145
+ },
146
+ async getContentResource(data) {
147
+ const result = await client
148
+ .select()
149
+ .from(contentResource)
150
+ .where(eq(contentResource.id, data))
151
+ .get()
152
+ return result ?? null
153
+ },
154
+ async createUser(data) {
155
+ return client
156
+ .insert(users)
157
+ .values({ ...data, id: crypto.randomUUID() })
158
+ .returning()
159
+ .get()
160
+ },
161
+ async getUser(data) {
162
+ const result = await client
163
+ .select()
164
+ .from(users)
165
+ .where(eq(users.id, data))
166
+ .get()
167
+ return result ?? null
168
+ },
169
+ async getUserByEmail(data) {
170
+ const result = await client
171
+ .select()
172
+ .from(users)
173
+ .where(eq(users.email, data))
174
+ .get()
175
+ return result ?? null
176
+ },
177
+ createSession(data) {
178
+ return client.insert(sessions).values(data).returning().get()
179
+ },
180
+ async getSessionAndUser(data) {
181
+ const result = await client
182
+ .select({ session: sessions, user: users })
183
+ .from(sessions)
184
+ .where(eq(sessions.sessionToken, data))
185
+ .innerJoin(users, eq(users.id, sessions.userId))
186
+ .get()
187
+ return result ?? null
188
+ },
189
+ async updateUser(data) {
190
+ if (!data.id) {
191
+ throw new Error('No user id.')
192
+ }
167
193
 
168
- const result = await client.update(users).set(data).where(eq(users.id, data.id)).returning().get()
169
- return result ?? null
170
- },
171
- async updateSession(data) {
172
- const result = await client
173
- .update(sessions)
174
- .set(data)
175
- .where(eq(sessions.sessionToken, data.sessionToken))
176
- .returning()
177
- .get()
178
- return result ?? null
179
- },
180
- async linkAccount(rawAccount) {
181
- return stripUndefined(await client.insert(accounts).values(rawAccount).returning().get())
182
- },
183
- async getUserByAccount(account) {
184
- const results = await client
185
- .select()
186
- .from(accounts)
187
- .leftJoin(users, eq(users.id, accounts.userId))
188
- .where(and(eq(accounts.provider, account.provider), eq(accounts.providerAccountId, account.providerAccountId)))
189
- .get()
194
+ const result = await client
195
+ .update(users)
196
+ .set(data)
197
+ .where(eq(users.id, data.id))
198
+ .returning()
199
+ .get()
200
+ return result ?? null
201
+ },
202
+ async updateSession(data) {
203
+ const result = await client
204
+ .update(sessions)
205
+ .set(data)
206
+ .where(eq(sessions.sessionToken, data.sessionToken))
207
+ .returning()
208
+ .get()
209
+ return result ?? null
210
+ },
211
+ async linkAccount(rawAccount) {
212
+ return stripUndefined(
213
+ await client.insert(accounts).values(rawAccount).returning().get(),
214
+ )
215
+ },
216
+ async getUserByAccount(account) {
217
+ const results = await client
218
+ .select()
219
+ .from(accounts)
220
+ .leftJoin(users, eq(users.id, accounts.userId))
221
+ .where(
222
+ and(
223
+ eq(accounts.provider, account.provider),
224
+ eq(accounts.providerAccountId, account.providerAccountId),
225
+ ),
226
+ )
227
+ .get()
190
228
 
191
- if (!results) {
192
- return null
193
- }
194
- return Promise.resolve(results).then((results) => results.user)
195
- },
196
- async deleteSession(sessionToken) {
197
- const result = await client.delete(sessions).where(eq(sessions.sessionToken, sessionToken)).returning().get()
198
- return result ?? null
199
- },
200
- async createVerificationToken(token) {
201
- const result = await client.insert(verificationTokens).values(token).returning().get()
202
- return result ?? null
203
- },
204
- async useVerificationToken(token) {
205
- try {
206
- const result = await client
207
- .delete(verificationTokens)
208
- .where(and(eq(verificationTokens.identifier, token.identifier), eq(verificationTokens.token, token.token)))
209
- .returning()
210
- .get()
211
- return result ?? null
212
- } catch (err) {
213
- throw new Error('No verification token found.')
214
- }
215
- },
216
- async deleteUser(id) {
217
- const result = await client.delete(users).where(eq(users.id, id)).returning().get()
218
- return result ?? null
219
- },
220
- async unlinkAccount(account) {
221
- await client
222
- .delete(accounts)
223
- .where(and(eq(accounts.providerAccountId, account.providerAccountId), eq(accounts.provider, account.provider)))
224
- .run()
225
- },
226
- }
229
+ if (!results) {
230
+ return null
231
+ }
232
+ return Promise.resolve(results).then((results) => results.user)
233
+ },
234
+ async deleteSession(sessionToken) {
235
+ const result = await client
236
+ .delete(sessions)
237
+ .where(eq(sessions.sessionToken, sessionToken))
238
+ .returning()
239
+ .get()
240
+ return result ?? null
241
+ },
242
+ async createVerificationToken(token) {
243
+ const result = await client
244
+ .insert(verificationTokens)
245
+ .values(token)
246
+ .returning()
247
+ .get()
248
+ return result ?? null
249
+ },
250
+ async useVerificationToken(token) {
251
+ try {
252
+ const result = await client
253
+ .delete(verificationTokens)
254
+ .where(
255
+ and(
256
+ eq(verificationTokens.identifier, token.identifier),
257
+ eq(verificationTokens.token, token.token),
258
+ ),
259
+ )
260
+ .returning()
261
+ .get()
262
+ return result ?? null
263
+ } catch (err) {
264
+ throw new Error('No verification token found.')
265
+ }
266
+ },
267
+ async deleteUser(id) {
268
+ const result = await client
269
+ .delete(users)
270
+ .where(eq(users.id, id))
271
+ .returning()
272
+ .get()
273
+ return result ?? null
274
+ },
275
+ async unlinkAccount(account) {
276
+ await client
277
+ .delete(accounts)
278
+ .where(
279
+ and(
280
+ eq(accounts.providerAccountId, account.providerAccountId),
281
+ eq(accounts.provider, account.provider),
282
+ ),
283
+ )
284
+ .run()
285
+ },
286
+ }
227
287
  }
package/src/lib/utils.ts CHANGED
@@ -5,7 +5,7 @@ import type { AnyPgTable, PgTableFn } from 'drizzle-orm/pg-core'
5
5
  import { type BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'
6
6
  import type { AnySQLiteTable, SQLiteTableFn } from 'drizzle-orm/sqlite-core'
7
7
 
8
- import type { DefaultSchema as MySqlSchema } from './mysql.js'
8
+ import type { DefaultSchema as MySqlSchema } from './mysql'
9
9
  import type { DefaultSchema as PgSchema } from './pg.js'
10
10
  import type { DefaultSchema as SQLiteSchema } from './sqlite.js'
11
11
 
@@ -14,35 +14,38 @@ export type AnyPgDatabase = PgDatabase<any, any, any>
14
14
  export type AnySQLiteDatabase = BaseSQLiteDatabase<any, any, any, any>
15
15
 
16
16
  export interface MinimumSchema {
17
- mysql: MySqlSchema & Record<string, AnyMySqlTable>
18
- pg: PgSchema & Record<string, AnyPgTable>
19
- sqlite: SQLiteSchema & Record<string, AnySQLiteTable>
17
+ mysql: MySqlSchema & Record<string, AnyMySqlTable>
18
+ pg: PgSchema & Record<string, AnyPgTable>
19
+ sqlite: SQLiteSchema & Record<string, AnySQLiteTable>
20
20
  }
21
21
 
22
- export type SqlFlavorOptions = AnyMySqlDatabase | AnyPgDatabase | AnySQLiteDatabase
22
+ export type SqlFlavorOptions =
23
+ | AnyMySqlDatabase
24
+ | AnyPgDatabase
25
+ | AnySQLiteDatabase
23
26
 
24
27
  export type ClientFlavors<Flavor> = Flavor extends AnyMySqlDatabase
25
- ? MinimumSchema['mysql']
26
- : Flavor extends AnyPgDatabase
27
- ? MinimumSchema['pg']
28
- : Flavor extends AnySQLiteDatabase
29
- ? MinimumSchema['sqlite']
30
- : never
28
+ ? MinimumSchema['mysql']
29
+ : Flavor extends AnyPgDatabase
30
+ ? MinimumSchema['pg']
31
+ : Flavor extends AnySQLiteDatabase
32
+ ? MinimumSchema['sqlite']
33
+ : never
31
34
 
32
35
  export type TableFn<Flavor> = Flavor extends AnyMySqlDatabase
33
- ? MySqlTableFn
34
- : Flavor extends AnyPgDatabase
35
- ? PgTableFn
36
- : Flavor extends AnySQLiteDatabase
37
- ? SQLiteTableFn
38
- : AnySQLiteTable
36
+ ? MySqlTableFn
37
+ : Flavor extends AnyPgDatabase
38
+ ? PgTableFn
39
+ : Flavor extends AnySQLiteDatabase
40
+ ? SQLiteTableFn
41
+ : AnySQLiteTable
39
42
 
40
43
  type NonNullableProps<T> = {
41
- [P in keyof T]: null extends T[P] ? never : P
44
+ [P in keyof T]: null extends T[P] ? never : P
42
45
  }[keyof T]
43
46
 
44
47
  export function stripUndefined<T>(obj: T): Pick<T, NonNullableProps<T>> {
45
- const result = {} as T
46
- for (const key in obj) if (obj[key] !== undefined) result[key] = obj[key]
47
- return result
48
+ const result = {} as T
49
+ for (const key in obj) if (obj[key] !== undefined) result[key] = obj[key]
50
+ return result
48
51
  }
package/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type CourseBuilderAdapter } from '@coursebuilder/core/adapters';
2
- import { createTables as createMySqlTables } from './lib/mysql.js';
3
- import { type SqlFlavorOptions, type TableFn } from './lib/utils.js';
4
- export declare function DrizzleAdapter<SqlFlavor extends SqlFlavorOptions>(db: SqlFlavor, table?: TableFn<SqlFlavor>): CourseBuilderAdapter;
5
- export { createMySqlTables };
6
- //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAExE,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAuB,MAAM,gBAAgB,CAAA;AAGvF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAEpE,wBAAgB,cAAc,CAAC,SAAS,SAAS,gBAAgB,EAC/D,EAAE,EAAE,SAAS,EACb,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACzB,oBAAoB,CAUtB;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
package/index.js DELETED
@@ -1,20 +0,0 @@
1
- import { is } from 'drizzle-orm';
2
- import { MySqlDatabase } from 'drizzle-orm/mysql-core';
3
- import { PgDatabase } from 'drizzle-orm/pg-core';
4
- import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
5
- import { createTables as createMySqlTables, mySqlDrizzleAdapter } from './lib/mysql.js';
6
- import { pgDrizzleAdapter } from './lib/pg.js';
7
- import { SQLiteDrizzleAdapter } from './lib/sqlite.js';
8
- export function DrizzleAdapter(db, table) {
9
- if (is(db, MySqlDatabase)) {
10
- return mySqlDrizzleAdapter(db, table);
11
- }
12
- else if (is(db, PgDatabase)) {
13
- return pgDrizzleAdapter(db, table);
14
- }
15
- else if (is(db, BaseSQLiteDatabase)) {
16
- return SQLiteDrizzleAdapter(db, table);
17
- }
18
- throw new Error(`Unsupported database type (${typeof db}) in Auth.js Drizzle adapter.`);
19
- }
20
- export { createMySqlTables };