order-management 0.0.17 → 0.0.18

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 (40) hide show
  1. package/.medusa/server/src/admin/index.js +638 -5
  2. package/.medusa/server/src/admin/index.mjs +638 -5
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +45 -0
  4. package/.medusa/server/src/api/admin/swaps/[id]/reject/route.js +43 -0
  5. package/.medusa/server/src/api/admin/swaps/[id]/route.js +70 -0
  6. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +45 -0
  7. package/.medusa/server/src/api/admin/swaps/route.js +51 -0
  8. package/.medusa/server/src/api/admin/swaps/validators.js +22 -0
  9. package/.medusa/server/src/api/store/guest-orders/[id]/invoice/route.js +17 -5
  10. package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +17 -5
  11. package/.medusa/server/src/api/store/guest-orders/[id]/route.js +17 -5
  12. package/.medusa/server/src/api/store/guest-orders/route.js +17 -5
  13. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +107 -0
  14. package/.medusa/server/src/api/store/otp/request/route.js +12 -5
  15. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +64 -0
  16. package/.medusa/server/src/api/store/swaps/[id]/route.js +112 -0
  17. package/.medusa/server/src/api/store/swaps/route.js +117 -0
  18. package/.medusa/server/src/helpers/index.js +18 -0
  19. package/.medusa/server/src/helpers/swaps.js +88 -0
  20. package/.medusa/server/src/modules/swap/index.js +13 -0
  21. package/.medusa/server/src/modules/swap/migrations/Migration20260121164326.js +49 -0
  22. package/.medusa/server/src/modules/swap/models/swap.js +21 -0
  23. package/.medusa/server/src/modules/swap/service.js +154 -0
  24. package/.medusa/server/src/services/otp-service.js +16 -5
  25. package/.medusa/server/src/subscribers/send-order-email.js +27 -8
  26. package/.medusa/server/src/workflows/index.js +8 -2
  27. package/.medusa/server/src/workflows/steps/swap/calculate-difference-step.js +56 -0
  28. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +29 -0
  29. package/.medusa/server/src/workflows/steps/swap/index.js +16 -0
  30. package/.medusa/server/src/workflows/steps/swap/retrieve-swap-step.js +26 -0
  31. package/.medusa/server/src/workflows/steps/swap/update-swap-status-step.js +25 -0
  32. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +47 -0
  33. package/.medusa/server/src/workflows/steps/swap/validate-swap-items-step.js +41 -0
  34. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +38 -0
  35. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +46 -0
  36. package/.medusa/server/src/workflows/swaps/types.js +3 -0
  37. package/.medusa/server/src/workflows/swaps/update-swap-status-workflow.js +23 -0
  38. package/README.md +208 -0
  39. package/package.json +1 -1
  40. package/.medusa/server/src/utils/resolve-options.js +0 -101
@@ -5,7 +5,6 @@ const otp_service_1 = require("../../../../services/otp-service");
5
5
  const utils_1 = require("@medusajs/framework/utils");
6
6
  const template_1 = require("../../../../utils/template");
7
7
  const send_notification_step_1 = require("../../../../workflows/steps/send-notification-step");
8
- const resolve_options_1 = require("../../../../utils/resolve-options");
9
8
  const otpService = new otp_service_1.OtpService();
10
9
  async function POST(req, res) {
11
10
  const { email, phone } = req.body;
@@ -23,9 +22,17 @@ async function POST(req, res) {
23
22
  let templatePath = null;
24
23
  try {
25
24
  const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
26
- const pluginOptions = (0, resolve_options_1.extractOrderManagementOptions)(configModule);
27
- const options = (0, resolve_options_1.resolveOrderManagementOptions)(pluginOptions);
28
- templatePath = options.email.otpTemplate;
25
+ const plugins = configModule
26
+ ?.projectConfig?.plugins ?? [];
27
+ for (const plugin of plugins) {
28
+ if (typeof plugin === "object" && plugin !== null && plugin?.resolve === "order-management") {
29
+ const options = plugin?.options;
30
+ if (options?.email?.otpTemplate) {
31
+ templatePath = options.email.otpTemplate;
32
+ break;
33
+ }
34
+ }
35
+ }
29
36
  if (!templatePath) {
30
37
  console.error("[OTP Service] OTP template path not configured");
31
38
  res.status(500).json({
@@ -101,4 +108,4 @@ async function POST(req, res) {
101
108
  res.status(500).json({ message: "Failed to generate OTP", error: errorMessage });
102
109
  }
103
110
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL290cC9yZXF1ZXN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsb0JBOEdDO0FBekhELGtFQUE2RDtBQUM3RCxxREFBcUU7QUFDckUseURBQTBGO0FBQzFGLCtGQUFxRjtBQUNyRix1RUFHMEM7QUFFMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSx3QkFBVSxFQUFFLENBQUE7QUFFNUIsS0FBSyxVQUFVLElBQUksQ0FDdEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBMEMsQ0FBQTtJQUV2RSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxDQUFBO1FBQ3RFLE9BQU07SUFDVixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQTtJQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUE7UUFDdkQsT0FBTTtJQUNWLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxrREFBa0Q7UUFDbEQsSUFBSSxZQUFZLEdBQWtCLElBQUksQ0FBQTtRQUN0QyxJQUFJLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUMvRSxNQUFNLGFBQWEsR0FBRyxJQUFBLCtDQUE2QixFQUFDLFlBQVksQ0FB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
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL290cC9yZXF1ZXN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsb0JBc0hDO0FBN0hELGtFQUE2RDtBQUM3RCxxREFBcUU7QUFDckUseURBQTBGO0FBQzFGLCtGQUFxRjtBQUVyRixNQUFNLFVBQVUsR0FBRyxJQUFJLHdCQUFVLEVBQUUsQ0FBQTtBQUU1QixLQUFLLFVBQVUsSUFBSSxDQUN0QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUEwQyxDQUFBO0lBRXZFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLENBQUE7UUFDdEUsT0FBTTtJQUNWLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFBO0lBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQTtRQUN2RCxPQUFNO0lBQ1YsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELGtEQUFrRDtRQUNsRCxJQUFJLFlBQVksR0FBa0IsSUFBSSxDQUFBO1FBQ3RDLElBQUksQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQy9FLE1BQU0sT0FBTyxHQUFJLFlBQTREO2dCQUMzRSxFQUFFLGFBQWEsRUFBRSxPQUFPLElBQUks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
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const update_swap_status_workflow_js_1 = require("../../../../../workflows/swaps/update-swap-status-workflow.js");
6
+ const index_js_1 = require("../../../../../modules/swap/index.js");
7
+ const POST = async (req, res) => {
8
+ const { id } = req.params;
9
+ // Type-safe access to auth_context
10
+ const authContext = req.auth_context;
11
+ const customerId = authContext?.actor_id;
12
+ if (!customerId || authContext?.actor_type !== "customer") {
13
+ res.status(401).json({
14
+ message: "Unauthorized: Customer authentication is required",
15
+ });
16
+ return;
17
+ }
18
+ try {
19
+ const swapService = req.scope.resolve(index_js_1.SWAP_MODULE);
20
+ // Check current status
21
+ const swap = await swapService.retrieveSwap(id);
22
+ const swapData = swap;
23
+ // Only allow cancellation if not completed
24
+ if (swapData.status === "completed") {
25
+ res.status(400).json({
26
+ message: "Cannot cancel a completed swap",
27
+ });
28
+ return;
29
+ }
30
+ // Update status to cancelled
31
+ const { result } = await (0, update_swap_status_workflow_js_1.updateSwapStatusWorkflow)(req.scope).run({
32
+ input: {
33
+ swap_id: id,
34
+ status: "cancelled",
35
+ metadata: {
36
+ cancelled_at: new Date().toISOString(),
37
+ cancelled_by: customerId,
38
+ },
39
+ },
40
+ });
41
+ res.json(result);
42
+ }
43
+ catch (error) {
44
+ if (error instanceof utils_1.MedusaError) {
45
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
46
+ ? 404
47
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
48
+ ? 400
49
+ : 500;
50
+ res.status(statusCode).json({
51
+ message: error.message,
52
+ type: error.type,
53
+ });
54
+ return;
55
+ }
56
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
57
+ res.status(500).json({
58
+ message: "Failed to cancel swap",
59
+ error: errorMessage,
60
+ });
61
+ }
62
+ };
63
+ exports.POST = POST;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL1tpZF0vY2FuY2VsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxrSEFBd0c7QUFDeEcsbUVBQWtFO0FBRzNELE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFFeEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7U0FDN0QsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxzQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUEwQixDQUFBO1FBRTNDLDJDQUEyQztRQUMzQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxnQ0FBZ0M7YUFDMUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSx5REFBd0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQy9ELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxNQUFNLEVBQUUsV0FBVztnQkFDbkIsUUFBUSxFQUFFO29CQUNSLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDdEMsWUFBWSxFQUFFLFVBQVU7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFFRixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUF0RVksUUFBQSxJQUFJLFFBc0VoQiJ9
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PATCH = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const swap_1 = require("../../../../modules/swap");
6
+ const zod_1 = require("zod");
7
+ const UpdateSwapSchema = zod_1.z.object({
8
+ note: zod_1.z.string().optional(),
9
+ });
10
+ const GET = async (req, res) => {
11
+ const { id } = req.params;
12
+ // Type-safe access to auth_context
13
+ const authContext = req.auth_context;
14
+ const customerId = authContext?.actor_id;
15
+ if (!customerId || authContext?.actor_type !== "customer") {
16
+ res.status(401).json({
17
+ message: "Unauthorized: Customer authentication is required",
18
+ });
19
+ return;
20
+ }
21
+ try {
22
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
23
+ const swap = await swapService.retrieveSwap(id);
24
+ const swapData = swap;
25
+ // Verify swap belongs to customer's order
26
+ // We'd need to check order ownership - for now, just return swap
27
+ // In production, add proper ownership validation
28
+ res.json({ swap });
29
+ }
30
+ catch (error) {
31
+ if (error instanceof utils_1.MedusaError) {
32
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400;
33
+ res.status(statusCode).json({
34
+ message: error.message,
35
+ type: error.type,
36
+ });
37
+ return;
38
+ }
39
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
40
+ res.status(500).json({
41
+ message: "Failed to retrieve swap",
42
+ error: errorMessage,
43
+ });
44
+ }
45
+ };
46
+ exports.GET = GET;
47
+ const PATCH = async (req, res) => {
48
+ const { id } = req.params;
49
+ // Type-safe access to auth_context
50
+ const authContext = req.auth_context;
51
+ const customerId = authContext?.actor_id;
52
+ if (!customerId || authContext?.actor_type !== "customer") {
53
+ res.status(401).json({
54
+ message: "Unauthorized: Customer authentication is required",
55
+ });
56
+ return;
57
+ }
58
+ try {
59
+ // Validate request body
60
+ const body = UpdateSwapSchema.parse(req.body);
61
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
62
+ // Only allow updating note if swap is in "requested" status
63
+ const swap = await swapService.retrieveSwap(id);
64
+ const swapData = swap;
65
+ if (swapData.status !== "requested") {
66
+ res.status(400).json({
67
+ message: `Cannot update swap. Current status: ${swapData.status}`,
68
+ });
69
+ return;
70
+ }
71
+ // Update only note field
72
+ if (body.note !== undefined) {
73
+ const metadata = (swap.metadata || {});
74
+ await swapService.updateSwaps({
75
+ selector: { id },
76
+ data: {
77
+ note: body.note,
78
+ metadata: {
79
+ ...metadata,
80
+ note_updated_at: new Date().toISOString(),
81
+ },
82
+ },
83
+ });
84
+ }
85
+ const updatedSwap = await swapService.retrieveSwap(id);
86
+ res.json({ swap: updatedSwap });
87
+ }
88
+ catch (error) {
89
+ if (error instanceof zod_1.z.ZodError) {
90
+ res.status(400).json({
91
+ message: "Invalid request data",
92
+ errors: error.errors,
93
+ });
94
+ return;
95
+ }
96
+ if (error instanceof utils_1.MedusaError) {
97
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400;
98
+ res.status(statusCode).json({
99
+ message: error.message,
100
+ type: error.type,
101
+ });
102
+ return;
103
+ }
104
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
105
+ res.status(500).json({
106
+ message: "Failed to update swap",
107
+ error: errorMessage,
108
+ });
109
+ }
110
+ };
111
+ exports.PATCH = PATCH;
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELG1EQUFzRDtBQUV0RCw2QkFBdUI7QUFFdkIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzVCLENBQUMsQ0FBQTtBQUVLLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFFeEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7U0FDN0QsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQTZCLENBQUE7UUFFOUMsMENBQTBDO1FBQzFDLGlFQUFpRTtRQUNqRSxpREFBaUQ7UUFFakQsR0FBRyxDQUFDLElBQUks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
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const create_swap_workflow_1 = require("../../../workflows/swaps/create-swap-workflow");
6
+ const swap_1 = require("../../../modules/swap");
7
+ const zod_1 = require("zod");
8
+ const CreateSwapSchema = zod_1.z.object({
9
+ order_id: zod_1.z.string(),
10
+ return_items: zod_1.z.array(zod_1.z.object({
11
+ id: zod_1.z.string(),
12
+ quantity: zod_1.z.number().positive(),
13
+ reason: zod_1.z.string().optional(),
14
+ })),
15
+ new_items: zod_1.z.array(zod_1.z.object({
16
+ variant_id: zod_1.z.string(),
17
+ quantity: zod_1.z.number().positive(),
18
+ })),
19
+ reason: zod_1.z.string().optional(),
20
+ note: zod_1.z.string().optional(),
21
+ });
22
+ const GET = async (req, res) => {
23
+ // Type-safe access to auth_context
24
+ const authContext = req.auth_context;
25
+ const customerId = authContext?.actor_id;
26
+ if (!customerId || authContext?.actor_type !== "customer") {
27
+ res.status(401).json({
28
+ message: "Unauthorized: Customer authentication is required",
29
+ });
30
+ return;
31
+ }
32
+ try {
33
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
34
+ // Get query parameters
35
+ const orderId = req.query.order_id;
36
+ const filters = {};
37
+ if (orderId) {
38
+ filters.order_id = orderId;
39
+ }
40
+ // Note: We'd need to add a method to filter by customer_id
41
+ // For now, we'll list all swaps and filter client-side
42
+ // In production, you'd want to add a proper filter method
43
+ const swaps = await swapService.listSwaps(filters, {
44
+ take: 100,
45
+ skip: 0,
46
+ });
47
+ // Filter by customer orders (would need order lookup)
48
+ // For now, return all swaps - filtering should be done via order_id
49
+ res.json({
50
+ swaps: Array.isArray(swaps) ? swaps : swaps ? [swaps] : [],
51
+ });
52
+ }
53
+ catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
55
+ res.status(500).json({
56
+ message: "Failed to retrieve swaps",
57
+ error: errorMessage,
58
+ });
59
+ }
60
+ };
61
+ exports.GET = GET;
62
+ const POST = async (req, res) => {
63
+ // Type-safe access to auth_context
64
+ const authContext = req.auth_context;
65
+ const customerId = authContext?.actor_id;
66
+ if (!customerId || authContext?.actor_type !== "customer") {
67
+ res.status(401).json({
68
+ message: "Unauthorized: Customer authentication is required",
69
+ });
70
+ return;
71
+ }
72
+ try {
73
+ // Validate request body
74
+ const body = CreateSwapSchema.parse(req.body);
75
+ const { result } = await (0, create_swap_workflow_1.createSwapWorkflow)(req.scope).run({
76
+ input: {
77
+ order_id: body.order_id,
78
+ return_items: body.return_items,
79
+ new_items: body.new_items,
80
+ reason: body.reason,
81
+ note: body.note,
82
+ customer_id: customerId,
83
+ },
84
+ });
85
+ res.status(201).json(result);
86
+ }
87
+ catch (error) {
88
+ if (error instanceof zod_1.z.ZodError) {
89
+ res.status(400).json({
90
+ message: "Invalid request data",
91
+ errors: error.errors,
92
+ });
93
+ return;
94
+ }
95
+ if (error instanceof utils_1.MedusaError) {
96
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
97
+ ? 404
98
+ : error.type === utils_1.MedusaError.Types.NOT_ALLOWED
99
+ ? 403
100
+ : error.type === utils_1.MedusaError.Types.UNAUTHORIZED
101
+ ? 401
102
+ : 400;
103
+ res.status(statusCode).json({
104
+ message: error.message,
105
+ type: error.type,
106
+ });
107
+ return;
108
+ }
109
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
110
+ res.status(500).json({
111
+ message: "Failed to create swap",
112
+ error: errorMessage,
113
+ });
114
+ }
115
+ };
116
+ exports.POST = POST;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCx3RkFBa0Y7QUFDbEYsZ0RBQW1EO0FBRW5ELDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FB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
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./swaps"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCIn0=
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSwapRequest = createSwapRequest;
4
+ exports.getSwaps = getSwaps;
5
+ exports.getSwap = getSwap;
6
+ exports.cancelSwap = cancelSwap;
7
+ /**
8
+ * Create a swap request
9
+ */
10
+ async function createSwapRequest(input, container) {
11
+ const { orderId, returnItems, newItems, reason, note } = input;
12
+ const response = await fetch(`/store/swaps`, {
13
+ method: "POST",
14
+ headers: {
15
+ "Content-Type": "application/json",
16
+ },
17
+ credentials: "include",
18
+ body: JSON.stringify({
19
+ order_id: orderId,
20
+ return_items: returnItems,
21
+ new_items: newItems,
22
+ reason,
23
+ note,
24
+ }),
25
+ });
26
+ if (!response.ok) {
27
+ const error = await response.json();
28
+ throw new Error(error.message || "Failed to create swap request");
29
+ }
30
+ const data = (await response.json());
31
+ return data.swap;
32
+ }
33
+ /**
34
+ * Get swaps for a customer (optionally filtered by order ID)
35
+ */
36
+ async function getSwaps(orderId, container) {
37
+ const url = orderId ? `/store/orders/${orderId}/swaps` : `/store/swaps`;
38
+ const response = await fetch(url, {
39
+ method: "GET",
40
+ headers: {
41
+ "Content-Type": "application/json",
42
+ },
43
+ credentials: "include",
44
+ });
45
+ if (!response.ok) {
46
+ const error = await response.json();
47
+ throw new Error(error.message || "Failed to retrieve swaps");
48
+ }
49
+ const data = (await response.json());
50
+ return data.swaps || [];
51
+ }
52
+ /**
53
+ * Get a specific swap by ID
54
+ */
55
+ async function getSwap(swapId, container) {
56
+ const response = await fetch(`/store/swaps/${swapId}`, {
57
+ method: "GET",
58
+ headers: {
59
+ "Content-Type": "application/json",
60
+ },
61
+ credentials: "include",
62
+ });
63
+ if (!response.ok) {
64
+ const error = await response.json();
65
+ throw new Error(error.message || "Failed to retrieve swap");
66
+ }
67
+ const data = (await response.json());
68
+ return data.swap;
69
+ }
70
+ /**
71
+ * Cancel a swap request
72
+ */
73
+ async function cancelSwap(swapId, container) {
74
+ const response = await fetch(`/store/swaps/${swapId}/cancel`, {
75
+ method: "POST",
76
+ headers: {
77
+ "Content-Type": "application/json",
78
+ },
79
+ credentials: "include",
80
+ });
81
+ if (!response.ok) {
82
+ const error = await response.json();
83
+ throw new Error(error.message || "Failed to cancel swap");
84
+ }
85
+ const data = (await response.json());
86
+ return data.swap;
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9zd2Fwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVDQSw4Q0E0QkM7QUFLRCw0QkFxQkM7QUFLRCwwQkFtQkM7QUFLRCxnQ0FtQkM7QUF6R0Q7O0dBRUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLEtBQTZCLEVBQzdCLFNBQTBCO0lBRTFCLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBRTlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsRUFBRTtRQUMzQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkM7UUFDRCxXQUFXLEVBQUUsU0FBUztRQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNuQixRQUFRLEVBQUUsT0FBTztZQUNqQixZQUFZLEVBQUUsV0FBVztZQUN6QixTQUFTLEVBQUUsUUFBUTtZQUNuQixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7S0FDSCxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFtQixDQUFBO0lBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsUUFBUSxDQUM1QixPQUFnQixFQUNoQixTQUEyQjtJQUUzQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFBO0lBRXZFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNoQyxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkM7UUFDRCxXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFzQixDQUFBO0lBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUE7QUFDekIsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLE9BQU8sQ0FDM0IsTUFBYyxFQUNkLFNBQTJCO0lBRTNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixNQUFNLEVBQUUsRUFBRTtRQUNyRCxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkM7UUFDRCxXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFtQixDQUFBO0lBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsVUFBVSxDQUM5QixNQUFjLEVBQ2QsU0FBMkI7SUFFM0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLE1BQU0sU0FBUyxFQUFFO1FBQzVELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFO1lBQ1AsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztRQUNELFdBQVcsRUFBRSxTQUFTO0tBQ3ZCLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQW1CLENBQUE7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0FBQ2xCLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SWAP_MODULE = void 0;
7
+ const service_1 = __importDefault(require("./service"));
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ exports.SWAP_MODULE = "swap";
10
+ exports.default = (0, utils_1.Module)(exports.SWAP_MODULE, {
11
+ service: service_1.default,
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zd2FwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdEQUFtQztBQUNuQyxxREFBa0Q7QUFFckMsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFBO0FBRWpDLGtCQUFlLElBQUEsY0FBTSxFQUFDLG1CQUFXLEVBQUU7SUFDakMsT0FBTyxFQUFFLGlCQUFXO0NBQ3JCLENBQUMsQ0FBQSJ9
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260121164326 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260121164326 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`
8
+ CREATE TABLE IF NOT EXISTS "swap" (
9
+ "id" text PRIMARY KEY,
10
+ "order_id" text NOT NULL,
11
+ "status" text NOT NULL DEFAULT 'requested',
12
+ "return_items" jsonb NULL,
13
+ "new_items" jsonb NULL,
14
+ "difference_due" numeric NOT NULL DEFAULT 0,
15
+ "payment_status" text NULL,
16
+ "fulfillment_status" text NULL,
17
+ "return_id" text NULL,
18
+ "exchange_id" text NULL,
19
+ "reason" text NULL,
20
+ "note" text NULL,
21
+ "metadata" jsonb NULL,
22
+ "created_at" timestamptz NOT NULL DEFAULT now(),
23
+ "updated_at" timestamptz NOT NULL DEFAULT now(),
24
+ "deleted_at" timestamptz NULL
25
+ );
26
+ `);
27
+ this.addSql(`
28
+ CREATE INDEX IF NOT EXISTS "IDX_swap_order_id"
29
+ ON "swap" ("order_id") WHERE "deleted_at" IS NULL;
30
+ `);
31
+ this.addSql(`
32
+ CREATE INDEX IF NOT EXISTS "IDX_swap_status"
33
+ ON "swap" ("status") WHERE "deleted_at" IS NULL;
34
+ `);
35
+ this.addSql(`
36
+ CREATE INDEX IF NOT EXISTS "IDX_swap_created_at"
37
+ ON "swap" ("created_at") WHERE "deleted_at" IS NULL;
38
+ `);
39
+ this.addSql(`
40
+ CREATE INDEX IF NOT EXISTS "IDX_swap_deleted_at"
41
+ ON "swap" ("deleted_at") WHERE "deleted_at" IS NULL;
42
+ `);
43
+ }
44
+ async down() {
45
+ this.addSql(`DROP TABLE IF EXISTS "swap";`);
46
+ }
47
+ }
48
+ exports.Migration20260121164326 = Migration20260121164326;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjAxMjExNjQzMjYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zd2FwL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjAxMjExNjQzMjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQW9FO0FBRXBFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbUJYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0NBQ0Y7QUEvQ0QsMERBK0NDIn0=
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Swap = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.Swap = utils_1.model.define("swap", {
6
+ id: utils_1.model.id().primaryKey(),
7
+ order_id: utils_1.model.text(),
8
+ status: utils_1.model.text().default("requested"), // requested, approved, rejected, return_started, return_shipped, return_received, new_items_shipped, completed, cancelled
9
+ return_items: utils_1.model.json().nullable(), // Array of { id: string, quantity: number, reason?: string }
10
+ new_items: utils_1.model.json().nullable(), // Array of { variant_id: string, quantity: number }
11
+ difference_due: utils_1.model.number().default(0), // Price difference (positive = customer owes, negative = refund)
12
+ payment_status: utils_1.model.text().nullable(), // pending, refunded, captured, cancelled
13
+ fulfillment_status: utils_1.model.text().nullable(), // not_fulfilled, fulfilled, shipped, delivered, cancelled
14
+ return_id: utils_1.model.text().nullable(), // Link to Medusa's return if created
15
+ exchange_id: utils_1.model.text().nullable(), // Link to Medusa's exchange if created
16
+ reason: utils_1.model.text().nullable(), // Reason for swap
17
+ note: utils_1.model.text().nullable(), // Customer note
18
+ metadata: utils_1.model.json().nullable(), // Status history, admin notes, etc.
19
+ });
20
+ exports.default = exports.Swap;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N3YXAvbW9kZWxzL3N3YXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRXBDLFFBQUEsSUFBSSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO0lBQ3ZDLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3RCLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLDBIQUEwSDtJQUNySyxZQUFZLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLDZEQUE2RDtJQUNwRyxTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLG9EQUFvRDtJQUN4RixjQUFjLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxpRUFBaUU7SUFDNUcsY0FBYyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSx5Q0FBeUM7SUFDbEYsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLDBEQUEwRDtJQUN2RyxTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLHFDQUFxQztJQUN6RSxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLHVDQUF1QztJQUM3RSxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLGtCQUFrQjtJQUNuRCxJQUFJLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLGdCQUFnQjtJQUMvQyxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLG9DQUFvQztDQUN4RSxDQUFDLENBQUE7QUFFRixrQkFBZSxZQUFJLENBQUEifQ==