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