@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
128 lines • 9.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.adminEventRouteMiddlewares = exports.updateEventDTO = exports.EventDTO = exports.createEventDTO = exports.listEventsQueryDTO = void 0;
const zod_1 = require("zod");
const error_handler_1 = require("../../../utils/error-handler");
// Query validation schema for list events
exports.listEventsQueryDTO = zod_1.z.object({
limit: zod_1.z
.string()
.transform((val) => parseInt(val, 10))
.pipe(zod_1.z
.number()
.min(1, "Limit must be at least 1")
.max(100, "Limit cannot exceed 100"))
.optional()
.default("10"),
offset: zod_1.z
.string()
.transform((val) => parseInt(val, 10))
.pipe(zod_1.z.number().min(0, "Offset must be at least 0"))
.optional()
.default("0"),
status: zod_1.z.enum(["active", "draft"]).optional(),
trigger_event: zod_1.z
.enum([
"order_placed",
"order_delivered",
"referral_order_placed",
"referral_link_redeemed",
])
.optional(),
search: zod_1.z.string().min(1, "Search term must not be empty").optional(),
sort_by: zod_1.z
.enum(["created_at", "updated_at", "name", "status"])
.optional()
.default("created_at"),
sort_order: zod_1.z.enum(["ASC", "DESC"]).optional().default("DESC"),
});
// DTOs
exports.createEventDTO = zod_1.z.object({
name: zod_1.z.string().min(1, "Name is required"),
description: zod_1.z.string().optional(),
status: zod_1.z.enum(["active", "draft"]).default("draft"),
expiry_days: zod_1.z
.number()
.min(1, "Expiry days must be greater than 0")
.optional(),
earn_per_order: zod_1.z
.number()
.min(0, "Earn per order must be greater than or equal to 0")
.optional(),
earn_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
max_earn_per_order: zod_1.z
.number()
.min(0, "Maximum earn must be greater than or equal to 0")
.optional(),
min_order_value: zod_1.z
.number()
.min(0, "Minimum order value must be greater than or equal to 0")
.optional(),
referee_bonus_per_order: zod_1.z
.number()
.min(0, "Referee bonus must be greater than or equal to 0")
.optional(),
referee_bonus_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
referrer_bonus_per_order: zod_1.z
.number()
.min(0, "Referral bonus must be greater than or equal to 0")
.optional(),
referrer_bonus_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
trigger_event: zod_1.z.enum([
"order_placed",
"order_delivered",
"referral_order_placed",
"referral_link_redeemed",
]),
});
exports.EventDTO = zod_1.z.object({
id: zod_1.z.string(),
name: zod_1.z.string(),
description: zod_1.z.string().optional(),
status: zod_1.z.enum(["active", "draft"]),
expiry_days: zod_1.z.number().min(1).optional(),
earn_per_order: zod_1.z.number().min(0).optional(),
earn_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
max_earn_per_order: zod_1.z.number().min(0).optional(),
min_order_value: zod_1.z.number().min(0).optional(),
referee_bonus_per_order: zod_1.z.number().min(0).optional(),
referee_bonus_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
referrer_bonus_per_order: zod_1.z.number().min(0).optional(),
referrer_bonus_per_order_type: zod_1.z.enum(["percentage", "fixed"]).optional(),
trigger_event: zod_1.z.enum([
"order_placed",
"referral_link_clicked",
"order_delivered",
"referral_order_placed",
]),
});
exports.updateEventDTO = exports.createEventDTO.partial();
// Middleware routes
exports.adminEventRouteMiddlewares = [
{
matcher: "/admin/event",
method: "POST",
middlewares: [(0, error_handler_1.createValidationMiddleware)(exports.createEventDTO)],
},
{
matcher: "/admin/event/:id",
method: "PUT",
middlewares: [(0, error_handler_1.createValidationMiddleware)(exports.updateEventDTO)],
},
{
matcher: "/admin/event/:id",
method: "DELETE",
middlewares: [],
},
{
matcher: "/admin/event/:id",
method: "GET",
middlewares: [],
},
{
matcher: "/admin/event",
method: "GET",
middlewares: [],
},
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vbG95YWx0eS1ldmVudC9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZCQUF3QjtBQUN4QixnRUFHc0M7QUFFdEMsMENBQTBDO0FBQzdCLFFBQUEsa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxLQUFLLEVBQUUsT0FBQztTQUNMLE1BQU0sRUFBRTtTQUNSLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNyQyxJQUFJLENBQ0gsT0FBQztTQUNFLE1BQU0sRUFBRTtTQUNSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLENBQUM7U0FDbEMsR0FBRyxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUN2QztTQUNBLFFBQVEsRUFBRTtTQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDaEIsTUFBTSxFQUFFLE9BQUM7U0FDTixNQUFNLEVBQUU7U0FDUixTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDckMsSUFBSSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7U0FDcEQsUUFBUSxFQUFFO1NBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUNmLE1BQU0sRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzlDLGFBQWEsRUFBRSxPQUFDO1NBQ2IsSUFBSSxDQUFDO1FBQ0osY0FBYztRQUNkLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsd0JBQXdCO0tBQ3pCLENBQUM7U0FDRCxRQUFRLEVBQUU7SUFDYixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsK0JBQStCLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckUsT0FBTyxFQUFFLE9BQUM7U0FDUCxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwRCxRQUFRLEVBQUU7U0FDVixPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3hCLFVBQVUsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztDQUMvRCxDQUFDLENBQUM7QUFFSCxPQUFPO0FBQ00sUUFBQSxjQUFjLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUM7SUFDM0MsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3BELFdBQVcsRUFBRSxPQUFDO1NBQ1gsTUFBTSxFQUFFO1NBQ1IsR0FBRyxDQUFDLENBQUMsRUFBRSxvQ0FBb0MsQ0FBQztTQUM1QyxRQUFRLEVBQUU7SUFDYixjQUFjLEVBQUUsT0FBQztTQUNkLE1BQU0sRUFBRTtTQUNSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsbURBQW1ELENBQUM7U0FDM0QsUUFBUSxFQUFFO0lBQ2IsbUJBQW1CLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMvRCxrQkFBa0IsRUFBRSxPQUFDO1NBQ2xCLE1BQU0sRUFBRTtTQUNSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsaURBQWlELENBQUM7U0FDekQsUUFBUSxFQUFFO0lBQ2IsZUFBZSxFQUFFLE9BQUM7U0FDZixNQUFNLEVBQUU7U0FDUixHQUFHLENBQUMsQ0FBQyxFQUFFLHdEQUF3RCxDQUFDO1NBQ2hFLFFBQVEsRUFBRTtJQUNiLHVCQUF1QixFQUFFLE9BQUM7U0FDdkIsTUFBTSxFQUFFO1NBQ1IsR0FBRyxDQUFDLENBQUMsRUFBRSxrREFBa0QsQ0FBQztTQUMxRCxRQUFRLEVBQUU7SUFDYiw0QkFBNEIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3hFLHdCQUF3QixFQUFFLE9BQUM7U0FDeEIsTUFBTSxFQUFFO1NBQ1IsR0FBRyxDQUFDLENBQUMsRUFBRSxtREFBbUQsQ0FBQztTQUMzRCxRQUFRLEVBQUU7SUFDYiw2QkFBNkIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3pFLGFBQWEsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BCLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtLQUN6QixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRVUsUUFBQSxRQUFRLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQixFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNkLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLE1BQU0sRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN6QyxjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsbUJBQW1CLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMvRCxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNoRCxlQUFlLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsdUJBQXVCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckQsNEJBQTRCLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN4RSx3QkFBd0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN0RCw2QkFBNkIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3pFLGFBQWEsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtLQUN4QixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRVUsUUFBQSxjQUFjLEdBQUcsc0JBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQU12RCxvQkFBb0I7QUFDUCxRQUFBLDBCQUEwQixHQUFzQjtJQUMzRDtRQUNFLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwwQ0FBMEIsRUFBQyxzQkFBYyxDQUFDLENBQUM7S0FDMUQ7SUFDRDtRQUNFLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUUsQ0FBQyxJQUFBLDBDQUEwQixFQUFDLHNCQUFjLENBQUMsQ0FBQztLQUMxRDtJQUNEO1FBQ0UsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsRUFBRTtLQUNoQjtJQUNEO1FBQ0UsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixNQUFNLEVBQUUsS0FBSztRQUNiLFdBQVcsRUFBRSxFQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsY0FBYztRQUN2QixNQUFNLEVBQUUsS0FBSztRQUNiLFdBQVcsRUFBRSxFQUFFO0tBQ2hCO0NBQ0YsQ0FBQyJ9