@xbstracts/medusa-coupons 0.0.1
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/.medusa/server/src/admin/index.js +3207 -0
- package/.medusa/server/src/admin/index.mjs +3253 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/entitlements/route.js +9 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/mirror-promotion/route.js +132 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/preview/route.js +28 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/route.js +18 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/route.js +14 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/route.js +53 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +26 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/route.js +27 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/route.js +36 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/cancel/route.js +15 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/redeem/route.js +15 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/route.js +16 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/route.js +22 -0
- package/.medusa/server/src/api/admin/coupon-products/options/route.js +9 -0
- package/.medusa/server/src/api/admin/coupon-products/products/route.js +16 -0
- package/.medusa/server/src/api/admin/coupon-products/route.js +13 -0
- package/.medusa/server/src/api/admin/coupon-products/uploads/route.js +7 -0
- package/.medusa/server/src/api/coupon-product-routes.js +546 -0
- package/.medusa/server/src/api/entitlement-utils.js +90 -0
- package/.medusa/server/src/api/media-upload.js +57 -0
- package/.medusa/server/src/api/middlewares.js +92 -0
- package/.medusa/server/src/api/product-utils.js +304 -0
- package/.medusa/server/src/api/promotion-code-resolver.js +225 -0
- package/.medusa/server/src/api/seller-utils.js +101 -0
- package/.medusa/server/src/api/utils.js +25 -0
- package/.medusa/server/src/api/validators.js +199 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/entitlements/route.js +9 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/route.js +18 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/route.js +14 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/route.js +60 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +41 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/route.js +45 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/route.js +51 -0
- package/.medusa/server/src/api/vendor/coupon-products/entitlements/[id]/route.js +25 -0
- package/.medusa/server/src/api/vendor/coupon-products/entitlements/route.js +45 -0
- package/.medusa/server/src/api/vendor/coupon-products/options/route.js +9 -0
- package/.medusa/server/src/api/vendor/coupon-products/products/route.js +19 -0
- package/.medusa/server/src/api/vendor/coupon-products/route.js +13 -0
- package/.medusa/server/src/api/vendor/coupon-products/uploads/route.js +7 -0
- package/.medusa/server/src/jobs/retry-coupon-media-deletes.js +14 -0
- package/.medusa/server/src/links/coupon-issuance-order-line-item.js +17 -0
- package/.medusa/server/src/links/coupon-issuance-order.js +15 -0
- package/.medusa/server/src/links/coupon-product-config-product.js +17 -0
- package/.medusa/server/src/links/coupon-product-variant-config-variant.js +17 -0
- package/.medusa/server/src/links/coupon-promotion-mirror-promotion.js +17 -0
- package/.medusa/server/src/links/customer-coupon-entitlement-customer.js +15 -0
- package/.medusa/server/src/modules/coupon/constants.js +46 -0
- package/.medusa/server/src/modules/coupon/index.js +16 -0
- package/.medusa/server/src/modules/coupon/loaders/reconcile-coupon-products.js +65 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260709000000.js +40 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260710000000.js +22 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260711000000.js +25 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260712000000.js +78 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260719000000.js +19 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260722000000.js +17 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260723000000.js +18 -0
- package/.medusa/server/src/modules/coupon/models/coupon-entitlement-promotion.js +31 -0
- package/.medusa/server/src/modules/coupon/models/coupon-entitlement-seller.js +28 -0
- package/.medusa/server/src/modules/coupon/models/coupon-issuance.js +35 -0
- package/.medusa/server/src/modules/coupon/models/coupon-media-asset.js +41 -0
- package/.medusa/server/src/modules/coupon/models/coupon-product-config.js +45 -0
- package/.medusa/server/src/modules/coupon/models/coupon-product-variant-config.js +36 -0
- package/.medusa/server/src/modules/coupon/models/coupon-promotion-mirror.js +27 -0
- package/.medusa/server/src/modules/coupon/models/customer-coupon-entitlement.js +56 -0
- package/.medusa/server/src/modules/coupon/models/index.js +23 -0
- package/.medusa/server/src/modules/coupon/payment-order-utils.js +76 -0
- package/.medusa/server/src/modules/coupon/product-metadata.js +24 -0
- package/.medusa/server/src/modules/coupon/purchase-conditions.js +138 -0
- package/.medusa/server/src/modules/coupon/service.js +628 -0
- package/.medusa/server/src/modules/coupon/types.js +3 -0
- package/.medusa/server/src/modules/coupon/utils.js +302 -0
- package/.medusa/server/src/subscribers/issue-coupons-from-order.js +88 -0
- package/.medusa/server/src/vendor/index.mjs +3237 -0
- package/.medusa/server/src/workflows/hooks/validate-coupon-add-to-cart.js +13 -0
- package/.medusa/server/src/workflows/hooks/validate-coupon-complete-cart.js +8 -0
- package/.medusa/server/src/workflows/index.js +21 -0
- package/.medusa/server/src/workflows/steps.js +27 -0
- package/.medusa/server/src/workflows/validate-coupon-purchase.js +85 -0
- package/README.md +84 -0
- package/package.json +102 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reconcileCouponProductsWithDatabase = reconcileCouponProductsWithDatabase;
|
|
4
|
+
exports.default = reconcileCouponProducts;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
async function reconcileCouponProductsWithDatabase(database) {
|
|
7
|
+
const result = await database.raw(`
|
|
8
|
+
with enabled_configs as (
|
|
9
|
+
select "id", "product_id"
|
|
10
|
+
from "coupon_product_config"
|
|
11
|
+
where "enabled" = true and "deleted_at" is null
|
|
12
|
+
),
|
|
13
|
+
updated_products as (
|
|
14
|
+
update "product" as p
|
|
15
|
+
set "metadata" = coalesce(p."metadata", '{}'::jsonb) || jsonb_build_object(
|
|
16
|
+
'medusa_coupons',
|
|
17
|
+
jsonb_build_object(
|
|
18
|
+
'enabled', true,
|
|
19
|
+
'config_id', c."id",
|
|
20
|
+
'item_type', 'coupon',
|
|
21
|
+
'fulfillment_type', 'code_issuance',
|
|
22
|
+
'requires_shipping', false
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
from enabled_configs as c
|
|
26
|
+
where p."id" = c."product_id"
|
|
27
|
+
and p."deleted_at" is null
|
|
28
|
+
and p."metadata" -> 'medusa_coupons' is distinct from jsonb_build_object(
|
|
29
|
+
'enabled', true,
|
|
30
|
+
'config_id', c."id",
|
|
31
|
+
'item_type', 'coupon',
|
|
32
|
+
'fulfillment_type', 'code_issuance',
|
|
33
|
+
'requires_shipping', false
|
|
34
|
+
)
|
|
35
|
+
returning p."id" as "product_id"
|
|
36
|
+
),
|
|
37
|
+
detached_profiles as (
|
|
38
|
+
delete from "product_shipping_profile" as psp
|
|
39
|
+
using enabled_configs as c
|
|
40
|
+
where psp."product_id" = c."product_id"
|
|
41
|
+
returning psp."product_id"
|
|
42
|
+
),
|
|
43
|
+
reconciled_products as (
|
|
44
|
+
select "product_id" from updated_products
|
|
45
|
+
union
|
|
46
|
+
select "product_id" from detached_profiles
|
|
47
|
+
)
|
|
48
|
+
select count(*)::int as "reconciled" from reconciled_products
|
|
49
|
+
`);
|
|
50
|
+
return Number(result.rows?.[0]?.reconciled || 0);
|
|
51
|
+
}
|
|
52
|
+
async function reconcileCouponProducts({ container, }) {
|
|
53
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
54
|
+
try {
|
|
55
|
+
const database = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION);
|
|
56
|
+
const reconciled = await reconcileCouponProductsWithDatabase(database);
|
|
57
|
+
if (reconciled > 0) {
|
|
58
|
+
logger.info(`[medusa-coupons] Reconciled ${reconciled} non-shipping coupon product(s)`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.warn(`[medusa-coupons] Unable to reconcile non-shipping coupon products: ${error instanceof Error ? error.message : String(error)}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb25jaWxlLWNvdXBvbi1wcm9kdWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvdXBvbi9sb2FkZXJzL3JlY29uY2lsZS1jb3Vwb24tcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxrRkFnREM7QUFFRCwwQ0F1QkM7QUEvRUQscURBQXFFO0FBTTlELEtBQUssVUFBVSxtQ0FBbUMsQ0FDdkQsUUFBNEI7SUFFNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsR0FBRyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ2pDLENBQUMsQ0FBQTtJQUVGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVjLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxFQUNwRCxTQUFTLEdBQ0s7SUFDZCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRWxFLElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ2hDLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtRQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sbUNBQW1DLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdEUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FDVCwrQkFBK0IsVUFBVSxpQ0FBaUMsQ0FDM0UsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQ1Qsc0VBQ0UsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDdkQsRUFBRSxDQUNILENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260709000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260709000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "coupon_product_config" ("id" text not null, "enabled" boolean not null default true, "product_id" text not null, "item_type" text check ("item_type" in ('coupon')) not null default 'coupon', "fulfillment_type" text check ("fulfillment_type" in ('code_issuance')) not null default 'code_issuance', "benefit_type" text check ("benefit_type" in ('fixed_amount', 'percentage', 'free_shipping', 'buy_get')) not null default 'fixed_amount', "amount" integer null, "percentage" integer null, "currency_code" text null, "code_strategy" text check ("code_strategy" in ('unique_code', 'shared_code')) not null default 'unique_code', "code_prefix" text null, "shared_code" text null, "expiration_policy" jsonb not null, "max_issuance_per_order_item" integer not null default 1, "promotion_mirror_mode" text check ("promotion_mirror_mode" in ('none', 'manual', 'auto')) not null default 'none', "promotion_status" text check ("promotion_status" in ('draft', 'active', 'inactive')) not null default 'draft', "promotion_template" jsonb null, "campaign_mode" text check ("campaign_mode" in ('none', 'existing', 'new')) not null default 'none', "campaign_id" text null, "campaign_snapshot" jsonb null, "config_version" integer not null default 1, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_product_config_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_product_config_product_id_unique" ON "coupon_product_config" ("product_id") WHERE deleted_at IS NULL;`);
|
|
9
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_product_config_enabled" ON "coupon_product_config" ("enabled") WHERE deleted_at IS NULL;`);
|
|
10
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_product_config_deleted_at" ON "coupon_product_config" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
11
|
+
this.addSql(`create table if not exists "coupon_product_variant_config" ("id" text not null, "enabled" boolean not null default true, "product_config_id" text not null, "variant_id" text not null, "benefit_type" text check ("benefit_type" in ('fixed_amount', 'percentage', 'free_shipping', 'buy_get')) null, "amount" integer null, "percentage" integer null, "currency_code" text null, "code_strategy" text check ("code_strategy" in ('unique_code', 'shared_code')) null, "code_prefix" text null, "shared_code" text null, "expiration_policy" jsonb null, "max_issuance_per_order_item" integer null, "promotion_mirror_mode" text check ("promotion_mirror_mode" in ('none', 'manual', 'auto')) null, "config_version" integer not null default 1, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_product_variant_config_pkey" primary key ("id"));`);
|
|
12
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_product_variant_config_product_config_id" ON "coupon_product_variant_config" ("product_config_id") WHERE deleted_at IS NULL;`);
|
|
13
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_product_variant_config_variant_id_unique" ON "coupon_product_variant_config" ("variant_id") WHERE deleted_at IS NULL;`);
|
|
14
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_product_variant_config_deleted_at" ON "coupon_product_variant_config" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
15
|
+
this.addSql(`create table if not exists "coupon_issuance" ("id" text not null, "order_id" text not null, "line_item_id" text not null, "product_id" text not null, "variant_id" text null, "customer_id" text null, "email" text null, "quantity" integer not null default 1, "status" text check ("status" in ('pending', 'issued', 'failed')) not null default 'pending', "config_id" text not null, "variant_config_id" text null, "config_version" integer not null default 1, "config_snapshot" jsonb not null, "issued_count" integer not null default 0, "failed_count" integer not null default 0, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_issuance_pkey" primary key ("id"));`);
|
|
16
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_issuance_order_id" ON "coupon_issuance" ("order_id") WHERE deleted_at IS NULL;`);
|
|
17
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_issuance_line_item_id_unique" ON "coupon_issuance" ("line_item_id") WHERE deleted_at IS NULL;`);
|
|
18
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_issuance_deleted_at" ON "coupon_issuance" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
19
|
+
this.addSql(`create table if not exists "customer_coupon_entitlement" ("id" text not null, "customer_id" text null, "email" text null, "code" text null, "shared_code" text null, "status" text check ("status" in ('pending', 'issued', 'redeemed', 'expired', 'canceled')) not null default 'issued', "product_id" text not null, "variant_id" text null, "order_id" text not null, "line_item_id" text not null, "issuance_id" text not null, "config_id" text not null, "variant_config_id" text null, "benefit_snapshot" jsonb not null, "source_snapshot" jsonb null, "expires_at" timestamptz null, "redeemed_at" timestamptz null, "external_reference" text null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "customer_coupon_entitlement_pkey" primary key ("id"));`);
|
|
20
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_customer_id" ON "customer_coupon_entitlement" ("customer_id") WHERE deleted_at IS NULL;`);
|
|
21
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_code" ON "customer_coupon_entitlement" ("code") WHERE deleted_at IS NULL;`);
|
|
22
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_order_id" ON "customer_coupon_entitlement" ("order_id") WHERE deleted_at IS NULL;`);
|
|
23
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_issuance_id" ON "customer_coupon_entitlement" ("issuance_id") WHERE deleted_at IS NULL;`);
|
|
24
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_status" ON "customer_coupon_entitlement" ("status") WHERE deleted_at IS NULL;`);
|
|
25
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_deleted_at" ON "customer_coupon_entitlement" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
26
|
+
this.addSql(`create table if not exists "coupon_promotion_mirror" ("id" text not null, "config_id" text not null, "variant_config_id" text null, "promotion_id" text null, "status" text check ("status" in ('pending', 'created', 'updated', 'failed')) not null default 'pending', "last_error" text null, "mirrored_at" timestamptz null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_promotion_mirror_pkey" primary key ("id"));`);
|
|
27
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_promotion_mirror_config_id" ON "coupon_promotion_mirror" ("config_id") WHERE deleted_at IS NULL;`);
|
|
28
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_promotion_mirror_promotion_id" ON "coupon_promotion_mirror" ("promotion_id") WHERE deleted_at IS NULL;`);
|
|
29
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_promotion_mirror_deleted_at" ON "coupon_promotion_mirror" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
30
|
+
}
|
|
31
|
+
async down() {
|
|
32
|
+
this.addSql(`drop table if exists "coupon_promotion_mirror" cascade;`);
|
|
33
|
+
this.addSql(`drop table if exists "customer_coupon_entitlement" cascade;`);
|
|
34
|
+
this.addSql(`drop table if exists "coupon_issuance" cascade;`);
|
|
35
|
+
this.addSql(`drop table if exists "coupon_product_variant_config" cascade;`);
|
|
36
|
+
this.addSql(`drop table if exists "coupon_product_config" cascade;`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Migration20260709000000 = Migration20260709000000;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MDkwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcwOTAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsaThDQUFpOEMsQ0FDbDhDLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHFKQUFxSixDQUN0SixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxpSUFBaUksQ0FDbEksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsdUlBQXVJLENBQ3hJLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULG03QkFBbTdCLENBQ3A3QixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxxS0FBcUssQ0FDdEssQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QscUtBQXFLLENBQ3RLLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHVKQUF1SixDQUN4SixDQUFBO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FDVCw4d0JBQTh3QixDQUMvd0IsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsdUhBQXVILENBQ3hILENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULDZJQUE2SSxDQUM5SSxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCwySEFBMkgsQ0FDNUgsQ0FBQTtRQUVELElBQUksQ0FBQyxNQUFNLENBQ1QsMDFCQUEwMUIsQ0FDMzFCLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHFKQUFxSixDQUN0SixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx1SUFBdUksQ0FDeEksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsK0lBQStJLENBQ2hKLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHFKQUFxSixDQUN0SixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCwySUFBMkksQ0FDNUksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsbUpBQW1KLENBQ3BKLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULHdoQkFBd2hCLENBQ3poQixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5SUFBeUksQ0FDMUksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsK0lBQStJLENBQ2hKLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULDJJQUEySSxDQUM1SSxDQUFBO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMseURBQXlELENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLDZEQUE2RCxDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsK0RBQStELENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLHVEQUF1RCxDQUFDLENBQUE7SUFDdEUsQ0FBQztDQUNGO0FBcEZELDBEQW9GQyJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260710000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260710000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "promotion_status" text check ("promotion_status" in ('draft', 'active', 'inactive')) not null default 'draft';`);
|
|
8
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "promotion_template" jsonb null;`);
|
|
9
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "campaign_mode" text check ("campaign_mode" in ('none', 'existing', 'new')) not null default 'none';`);
|
|
10
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "campaign_id" text null;`);
|
|
11
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "campaign_snapshot" jsonb null;`);
|
|
12
|
+
}
|
|
13
|
+
async down() {
|
|
14
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "campaign_snapshot";`);
|
|
15
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "campaign_id";`);
|
|
16
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "campaign_mode";`);
|
|
17
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "promotion_template";`);
|
|
18
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "promotion_status";`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Migration20260710000000 = Migration20260710000000;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MTAwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcxMDAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1Qsd0xBQXdMLENBQ3pMLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHlHQUF5RyxDQUMxRyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCw2S0FBNkssQ0FDOUssQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsaUdBQWlHLENBQ2xHLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHdHQUF3RyxDQUN6RyxDQUFBO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQ1QsMEZBQTBGLENBQzNGLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULG9GQUFvRixDQUNyRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxzRkFBc0YsQ0FDdkYsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsMkZBQTJGLENBQzVGLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHlGQUF5RixDQUMxRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBcENELDBEQW9DQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260711000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260711000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "amounts" jsonb null;`);
|
|
8
|
+
this.addSql(`alter table if exists "coupon_product_variant_config" add column if not exists "amounts" jsonb null;`);
|
|
9
|
+
this.addSql(`update "coupon_product_config" set "amounts" = jsonb_build_array(jsonb_build_object('currency_code', lower("currency_code"), 'amount', "amount")) where "benefit_type" = 'fixed_amount' and "amounts" is null and "amount" is not null and "currency_code" is not null;`);
|
|
10
|
+
this.addSql(`update "coupon_product_variant_config" set "amounts" = jsonb_build_array(jsonb_build_object('currency_code', lower("currency_code"), 'amount', "amount")) where "amounts" is null and "amount" is not null and "currency_code" is not null;`);
|
|
11
|
+
this.addSql(`update "coupon_issuance" set "config_snapshot" = jsonb_set("config_snapshot", '{amounts}', jsonb_build_array(jsonb_build_object('currency_code', lower("config_snapshot"->>'currency_code'), 'amount', ("config_snapshot"->>'amount')::numeric)), true) where "config_snapshot"->>'benefit_type' = 'fixed_amount' and not ("config_snapshot" ? 'amounts') and "config_snapshot"->>'amount' is not null and "config_snapshot"->>'currency_code' is not null;`);
|
|
12
|
+
this.addSql(`update "customer_coupon_entitlement" set "benefit_snapshot" = jsonb_set("benefit_snapshot", '{amounts}', jsonb_build_array(jsonb_build_object('currency_code', lower("benefit_snapshot"->>'currency_code'), 'amount', ("benefit_snapshot"->>'amount')::numeric)), true) where "benefit_snapshot"->>'benefit_type' = 'fixed_amount' and not ("benefit_snapshot" ? 'amounts') and "benefit_snapshot"->>'amount' is not null and "benefit_snapshot"->>'currency_code' is not null;`);
|
|
13
|
+
this.addSql(`create table if not exists "coupon_entitlement_promotion" ("id" text not null, "entitlement_id" text not null, "currency_code" text not null, "promotion_id" text not null, "internal_code" text not null, "amount" numeric not null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_entitlement_promotion_pkey" primary key ("id"));`);
|
|
14
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_entitlement_promotion_entitlement_currency_unique" ON "coupon_entitlement_promotion" ("entitlement_id", "currency_code") WHERE deleted_at IS NULL;`);
|
|
15
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_entitlement_promotion_promotion_id" ON "coupon_entitlement_promotion" ("promotion_id") WHERE deleted_at IS NULL;`);
|
|
16
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_entitlement_promotion_internal_code" ON "coupon_entitlement_promotion" ("internal_code") WHERE deleted_at IS NULL;`);
|
|
17
|
+
}
|
|
18
|
+
async down() {
|
|
19
|
+
this.addSql(`drop table if exists "coupon_entitlement_promotion" cascade;`);
|
|
20
|
+
this.addSql(`alter table if exists "coupon_product_variant_config" drop column if exists "amounts";`);
|
|
21
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "amounts";`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Migration20260711000000 = Migration20260711000000;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MTEwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcxMTAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsOEZBQThGLENBQy9GLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHNHQUFzRyxDQUN2RyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5UUFBeVEsQ0FDMVEsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsNk9BQTZPLENBQzlPLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULDZiQUE2YixDQUM5YixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxpZEFBaWQsQ0FDbGQsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsbWNBQW1jLENBQ3BjLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULGtNQUFrTSxDQUNuTSxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5SkFBeUosQ0FDMUosQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1Qsa0tBQWtLLENBQ25LLENBQUE7SUFDSCxDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4REFBOEQsQ0FBQyxDQUFBO1FBQzNFLElBQUksQ0FBQyxNQUFNLENBQ1Qsd0ZBQXdGLENBQ3pGLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULGdGQUFnRixDQUNqRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBM0NELDBEQTJDQyJ9
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260712000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260712000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "coupon_product_config" add column if not exists "purchase_conditions" jsonb not null default '[]'::jsonb;`);
|
|
8
|
+
this.addSql(`
|
|
9
|
+
with config_currencies as (
|
|
10
|
+
select
|
|
11
|
+
config.id,
|
|
12
|
+
jsonb_agg(currency.code order by currency.code) as codes,
|
|
13
|
+
count(*) as code_count
|
|
14
|
+
from coupon_product_config as config
|
|
15
|
+
cross join lateral (
|
|
16
|
+
select distinct lower(amount_row->>'currency_code') as code
|
|
17
|
+
from jsonb_array_elements(config.amounts) as amount_row
|
|
18
|
+
where nullif(trim(amount_row->>'currency_code'), '') is not null
|
|
19
|
+
) as currency
|
|
20
|
+
where config.benefit_type = 'fixed_amount'
|
|
21
|
+
and jsonb_typeof(config.amounts) = 'array'
|
|
22
|
+
group by config.id
|
|
23
|
+
)
|
|
24
|
+
update coupon_product_config as config
|
|
25
|
+
set purchase_conditions = config.purchase_conditions || jsonb_build_array(
|
|
26
|
+
jsonb_build_object(
|
|
27
|
+
'attribute', 'currency_code',
|
|
28
|
+
'operator', case when currency.code_count = 1 then 'eq' else 'in' end,
|
|
29
|
+
'values', currency.codes
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
from config_currencies as currency
|
|
33
|
+
where currency.id = config.id
|
|
34
|
+
and currency.code_count > 0
|
|
35
|
+
and not exists (
|
|
36
|
+
select 1
|
|
37
|
+
from jsonb_array_elements(config.purchase_conditions) as condition
|
|
38
|
+
where condition->>'attribute' = 'currency_code'
|
|
39
|
+
);
|
|
40
|
+
`);
|
|
41
|
+
this.addSql(`
|
|
42
|
+
do $$
|
|
43
|
+
begin
|
|
44
|
+
if to_regclass('public.product_sales_channel') is not null then
|
|
45
|
+
execute $sql$
|
|
46
|
+
with linked_channels as (
|
|
47
|
+
select product_id, array_agg(distinct sales_channel_id order by sales_channel_id) as ids
|
|
48
|
+
from product_sales_channel
|
|
49
|
+
where product_id is not null
|
|
50
|
+
and sales_channel_id is not null
|
|
51
|
+
and deleted_at is null
|
|
52
|
+
group by product_id
|
|
53
|
+
)
|
|
54
|
+
update coupon_product_config as config
|
|
55
|
+
set purchase_conditions = config.purchase_conditions || jsonb_build_array(
|
|
56
|
+
jsonb_build_object(
|
|
57
|
+
'attribute', 'sales_channel_id',
|
|
58
|
+
'operator', case when array_length(linked.ids, 1) = 1 then 'eq' else 'in' end,
|
|
59
|
+
'values', to_jsonb(linked.ids)
|
|
60
|
+
)
|
|
61
|
+
)
|
|
62
|
+
from linked_channels as linked
|
|
63
|
+
where linked.product_id = config.product_id
|
|
64
|
+
and not exists (
|
|
65
|
+
select 1 from jsonb_array_elements(config.purchase_conditions) as condition
|
|
66
|
+
where condition->>'attribute' = 'sales_channel_id'
|
|
67
|
+
)
|
|
68
|
+
$sql$;
|
|
69
|
+
end if;
|
|
70
|
+
end $$;
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
async down() {
|
|
74
|
+
this.addSql(`alter table if exists "coupon_product_config" drop column if exists "purchase_conditions";`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.Migration20260712000000 = Migration20260712000000;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MTIwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcxMjAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1Qsa0lBQWtJLENBQ25JLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWdDWCxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E4QlgsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUE1RUQsMERBNEVDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260719000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260719000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "coupon_media_asset" ("id" text not null, "file_id" text not null, "url" text not null, "seller_id" text null, "product_id" text null, "role" text check ("role" in ('unassigned', 'thumbnail', 'image')) not null default 'unassigned', "position" integer null, "status" text check ("status" in ('uploaded', 'attached', 'pending_delete')) not null default 'uploaded', "delete_attempts" integer not null default 0, "last_error" text null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_media_asset_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_media_asset_file_id_unique" ON "coupon_media_asset" ("file_id") WHERE deleted_at IS NULL;`);
|
|
9
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_media_asset_seller_id" ON "coupon_media_asset" ("seller_id") WHERE deleted_at IS NULL;`);
|
|
10
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_media_asset_product_id" ON "coupon_media_asset" ("product_id") WHERE deleted_at IS NULL;`);
|
|
11
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_media_asset_status" ON "coupon_media_asset" ("status") WHERE deleted_at IS NULL;`);
|
|
12
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_media_asset_deleted_at" ON "coupon_media_asset" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
13
|
+
}
|
|
14
|
+
async down() {
|
|
15
|
+
this.addSql(`drop table if exists "coupon_media_asset" cascade;`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.Migration20260719000000 = Migration20260719000000;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MTkwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcxOTAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QseW9CQUF5b0IsQ0FDMW9CLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHlJQUF5SSxDQUMxSSxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCwrSEFBK0gsQ0FDaEksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsaUlBQWlJLENBQ2xJLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHlIQUF5SCxDQUMxSCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxpSUFBaUksQ0FDbEksQ0FBQTtJQUNILENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLG9EQUFvRCxDQUFDLENBQUE7SUFDbkUsQ0FBQztDQUNGO0FBekJELDBEQXlCQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260722000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260722000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table "customer_coupon_entitlement" add column if not exists "origin" text check ("origin" in ('purchase', 'external')) not null default 'purchase';`);
|
|
8
|
+
this.addSql(`alter table "customer_coupon_entitlement" alter column "product_id" drop not null, alter column "order_id" drop not null, alter column "line_item_id" drop not null, alter column "issuance_id" drop not null, alter column "config_id" drop not null;`);
|
|
9
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_customer_coupon_entitlement_external_reference_unique" ON "customer_coupon_entitlement" ("external_reference") WHERE deleted_at IS NULL AND external_reference IS NOT NULL;`);
|
|
10
|
+
}
|
|
11
|
+
async down() {
|
|
12
|
+
this.addSql(`drop index if exists "IDX_customer_coupon_entitlement_external_reference_unique";`);
|
|
13
|
+
this.addSql(`alter table "customer_coupon_entitlement" drop column if exists "origin";`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.Migration20260722000000 = Migration20260722000000;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MjIwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcyMjAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsNEpBQTRKLENBQzdKLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHdQQUF3UCxDQUN6UCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCxvTkFBb04sQ0FDck4sQ0FBQTtJQUNILENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUNULG1GQUFtRixDQUNwRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCwyRUFBMkUsQ0FDNUUsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQXJCRCwwREFxQkMifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260723000000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260723000000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "coupon_entitlement_seller" ("id" text not null, "entitlement_id" text not null, "seller_id" text not null, "seller_member_id" text null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "coupon_entitlement_seller_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_entitlement_seller_entitlement_id" ON "coupon_entitlement_seller" ("entitlement_id") WHERE deleted_at IS NULL;`);
|
|
9
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_entitlement_seller_seller_id" ON "coupon_entitlement_seller" ("seller_id") WHERE deleted_at IS NULL;`);
|
|
10
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_coupon_entitlement_seller_unique" ON "coupon_entitlement_seller" ("entitlement_id", "seller_id") WHERE deleted_at IS NULL;`);
|
|
11
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_coupon_entitlement_seller_deleted_at" ON "coupon_entitlement_seller" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
12
|
+
}
|
|
13
|
+
async down() {
|
|
14
|
+
this.addSql(`drop table if exists "coupon_entitlement_seller" cascade;`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.Migration20260723000000 = Migration20260723000000;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MjMwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDcyMzAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsK1hBQStYLENBQ2hZLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULHVKQUF1SixDQUN4SixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCw2SUFBNkksQ0FDOUksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsbUtBQW1LLENBQ3BLLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULCtJQUErSSxDQUNoSixDQUFBO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQTtJQUMxRSxDQUFDO0NBQ0Y7QUF0QkQsMERBc0JDIn0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const CouponEntitlementPromotion = utils_1.model
|
|
5
|
+
.define("coupon_entitlement_promotion", {
|
|
6
|
+
id: utils_1.model.id({ prefix: "ceprm" }).primaryKey(),
|
|
7
|
+
entitlement_id: utils_1.model.text(),
|
|
8
|
+
currency_code: utils_1.model.text(),
|
|
9
|
+
promotion_id: utils_1.model.text(),
|
|
10
|
+
internal_code: utils_1.model.text(),
|
|
11
|
+
amount: utils_1.model.number(),
|
|
12
|
+
metadata: utils_1.model.json().nullable(),
|
|
13
|
+
})
|
|
14
|
+
.indexes([
|
|
15
|
+
{
|
|
16
|
+
name: "IDX_coupon_entitlement_promotion_entitlement_currency_unique",
|
|
17
|
+
on: ["entitlement_id", "currency_code"],
|
|
18
|
+
unique: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "IDX_coupon_entitlement_promotion_promotion_id",
|
|
22
|
+
on: ["promotion_id"],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "IDX_coupon_entitlement_promotion_internal_code",
|
|
26
|
+
on: ["internal_code"],
|
|
27
|
+
unique: true,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
exports.default = CouponEntitlementPromotion;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLWVudGl0bGVtZW50LXByb21vdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvdXBvbi9tb2RlbHMvY291cG9uLWVudGl0bGVtZW50LXByb21vdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFpRDtBQUVqRCxNQUFNLDBCQUEwQixHQUFHLGFBQUs7S0FDckMsTUFBTSxDQUFDLDhCQUE4QixFQUFFO0lBQ3RDLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzlDLGNBQWMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzVCLGFBQWEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzNCLFlBQVksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzFCLGFBQWEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzNCLE1BQU0sRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFO0lBQ3RCLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLElBQUksRUFBRSw4REFBOEQ7UUFDcEUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDO1FBQ3ZDLE1BQU0sRUFBRSxJQUFJO0tBQ2I7SUFDRDtRQUNFLElBQUksRUFBRSwrQ0FBK0M7UUFDckQsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDO0tBQ3JCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsZ0RBQWdEO1FBQ3RELEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUNyQixNQUFNLEVBQUUsSUFBSTtLQUNiO0NBQ0YsQ0FBQyxDQUFBO0FBRUosa0JBQWUsMEJBQTBCLENBQUEifQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const CouponEntitlementSeller = utils_1.model
|
|
5
|
+
.define("coupon_entitlement_seller", {
|
|
6
|
+
id: utils_1.model.id({ prefix: "cescope" }).primaryKey(),
|
|
7
|
+
entitlement_id: utils_1.model.text(),
|
|
8
|
+
seller_id: utils_1.model.text(),
|
|
9
|
+
seller_member_id: utils_1.model.text().nullable(),
|
|
10
|
+
metadata: utils_1.model.json().nullable(),
|
|
11
|
+
})
|
|
12
|
+
.indexes([
|
|
13
|
+
{
|
|
14
|
+
name: "IDX_coupon_entitlement_seller_entitlement_id",
|
|
15
|
+
on: ["entitlement_id"],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "IDX_coupon_entitlement_seller_seller_id",
|
|
19
|
+
on: ["seller_id"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "IDX_coupon_entitlement_seller_unique",
|
|
23
|
+
on: ["entitlement_id", "seller_id"],
|
|
24
|
+
unique: true,
|
|
25
|
+
},
|
|
26
|
+
]);
|
|
27
|
+
exports.default = CouponEntitlementSeller;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLWVudGl0bGVtZW50LXNlbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvdXBvbi9tb2RlbHMvY291cG9uLWVudGl0bGVtZW50LXNlbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFpRDtBQUVqRCxNQUFNLHVCQUF1QixHQUFHLGFBQUs7S0FDbEMsTUFBTSxDQUFDLDJCQUEyQixFQUFFO0lBQ25DLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQ2hELGNBQWMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzVCLFNBQVMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3ZCLGdCQUFnQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLDhDQUE4QztRQUNwRCxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztLQUN2QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLHlDQUF5QztRQUMvQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDbEI7SUFDRDtRQUNFLElBQUksRUFBRSxzQ0FBc0M7UUFDNUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO1FBQ25DLE1BQU0sRUFBRSxJQUFJO0tBQ2I7Q0FDRixDQUFDLENBQUE7QUFFSixrQkFBZSx1QkFBdUIsQ0FBQSJ9
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const CouponIssuance = utils_1.model
|
|
6
|
+
.define("coupon_issuance", {
|
|
7
|
+
id: utils_1.model.id({ prefix: "ciss" }).primaryKey(),
|
|
8
|
+
order_id: utils_1.model.text(),
|
|
9
|
+
line_item_id: utils_1.model.text(),
|
|
10
|
+
product_id: utils_1.model.text(),
|
|
11
|
+
variant_id: utils_1.model.text().nullable(),
|
|
12
|
+
customer_id: utils_1.model.text().nullable(),
|
|
13
|
+
email: utils_1.model.text().nullable(),
|
|
14
|
+
quantity: utils_1.model.number().default(1),
|
|
15
|
+
status: utils_1.model.enum([...constants_1.ISSUANCE_STATUSES]).default("pending"),
|
|
16
|
+
config_id: utils_1.model.text(),
|
|
17
|
+
variant_config_id: utils_1.model.text().nullable(),
|
|
18
|
+
config_version: utils_1.model.number().default(1),
|
|
19
|
+
config_snapshot: utils_1.model.json(),
|
|
20
|
+
issued_count: utils_1.model.number().default(0),
|
|
21
|
+
failed_count: utils_1.model.number().default(0),
|
|
22
|
+
metadata: utils_1.model.json().nullable(),
|
|
23
|
+
})
|
|
24
|
+
.indexes([
|
|
25
|
+
{
|
|
26
|
+
name: "IDX_coupon_issuance_order_id",
|
|
27
|
+
on: ["order_id"],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "IDX_coupon_issuance_line_item_id",
|
|
31
|
+
on: ["line_item_id"],
|
|
32
|
+
},
|
|
33
|
+
]);
|
|
34
|
+
exports.default = CouponIssuance;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLWlzc3VhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY291cG9uL21vZGVscy9jb3Vwb24taXNzdWFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFDakQsNENBQWdEO0FBRWhELE1BQU0sY0FBYyxHQUFHLGFBQUs7S0FDekIsTUFBTSxDQUFDLGlCQUFpQixFQUFFO0lBQ3pCLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzdDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3RCLFlBQVksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzFCLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3hCLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLFdBQVcsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLEtBQUssRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLFFBQVEsRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsNkJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDN0QsU0FBUyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDdkIsaUJBQWlCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxjQUFjLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekMsZUFBZSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDN0IsWUFBWSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFlBQVksRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsQyxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1A7UUFDRSxJQUFJLEVBQUUsOEJBQThCO1FBQ3BDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQztLQUNqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGtDQUFrQztRQUN4QyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUM7S0FDckI7Q0FDRixDQUFDLENBQUE7QUFFSixrQkFBZSxjQUFjLENBQUEifQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const CouponMediaAsset = utils_1.model
|
|
5
|
+
.define("coupon_media_asset", {
|
|
6
|
+
id: utils_1.model.id({ prefix: "cpmedia" }).primaryKey(),
|
|
7
|
+
file_id: utils_1.model.text(),
|
|
8
|
+
url: utils_1.model.text(),
|
|
9
|
+
seller_id: utils_1.model.text().nullable(),
|
|
10
|
+
product_id: utils_1.model.text().nullable(),
|
|
11
|
+
role: utils_1.model
|
|
12
|
+
.enum(["unassigned", "thumbnail", "image"])
|
|
13
|
+
.default("unassigned"),
|
|
14
|
+
position: utils_1.model.number().nullable(),
|
|
15
|
+
status: utils_1.model
|
|
16
|
+
.enum(["uploaded", "attached", "pending_delete"])
|
|
17
|
+
.default("uploaded"),
|
|
18
|
+
delete_attempts: utils_1.model.number().default(0),
|
|
19
|
+
last_error: utils_1.model.text().nullable(),
|
|
20
|
+
})
|
|
21
|
+
.indexes([
|
|
22
|
+
{
|
|
23
|
+
name: "IDX_coupon_media_asset_file_id_unique",
|
|
24
|
+
on: ["file_id"],
|
|
25
|
+
unique: true,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "IDX_coupon_media_asset_seller_id",
|
|
29
|
+
on: ["seller_id"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "IDX_coupon_media_asset_product_id",
|
|
33
|
+
on: ["product_id"],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "IDX_coupon_media_asset_status",
|
|
37
|
+
on: ["status"],
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
exports.default = CouponMediaAsset;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLW1lZGlhLWFzc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY291cG9uL21vZGVscy9jb3Vwb24tbWVkaWEtYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFLO0tBQzNCLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1QixFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRTtJQUNoRCxPQUFPLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNyQixHQUFHLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNqQixTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxJQUFJLEVBQUUsYUFBSztTQUNSLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDMUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUN4QixRQUFRLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxNQUFNLEVBQUUsYUFBSztTQUNWLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNoRCxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3RCLGVBQWUsRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxQyxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNwQyxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1A7UUFDRSxJQUFJLEVBQUUsdUNBQXVDO1FBQzdDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUNmLE1BQU0sRUFBRSxJQUFJO0tBQ2I7SUFDRDtRQUNFLElBQUksRUFBRSxrQ0FBa0M7UUFDeEMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDO0tBQ2xCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQztLQUNuQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLCtCQUErQjtRQUNyQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDZjtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLGdCQUFnQixDQUFBIn0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const CouponProductConfig = utils_1.model
|
|
6
|
+
.define("coupon_product_config", {
|
|
7
|
+
id: utils_1.model.id({ prefix: "cpcfg" }).primaryKey(),
|
|
8
|
+
enabled: utils_1.model.boolean().default(true),
|
|
9
|
+
product_id: utils_1.model.text(),
|
|
10
|
+
item_type: utils_1.model.enum(["coupon"]).default("coupon"),
|
|
11
|
+
fulfillment_type: utils_1.model.enum(["code_issuance"]).default("code_issuance"),
|
|
12
|
+
benefit_type: utils_1.model.enum([...constants_1.BENEFIT_TYPES]).default("fixed_amount"),
|
|
13
|
+
purchase_conditions: utils_1.model.json().default([]),
|
|
14
|
+
amounts: utils_1.model.json().nullable(),
|
|
15
|
+
amount: utils_1.model.number().nullable(),
|
|
16
|
+
percentage: utils_1.model.number().nullable(),
|
|
17
|
+
currency_code: utils_1.model.text().nullable(),
|
|
18
|
+
code_strategy: utils_1.model.enum([...constants_1.CODE_STRATEGIES]).default("unique_code"),
|
|
19
|
+
code_prefix: utils_1.model.text().nullable(),
|
|
20
|
+
shared_code: utils_1.model.text().nullable(),
|
|
21
|
+
expiration_policy: utils_1.model.json(),
|
|
22
|
+
max_issuance_per_order_item: utils_1.model.number().default(1),
|
|
23
|
+
promotion_mirror_mode: utils_1.model
|
|
24
|
+
.enum([...constants_1.PROMOTION_MIRROR_MODES])
|
|
25
|
+
.default("none"),
|
|
26
|
+
promotion_status: utils_1.model.enum([...constants_1.PROMOTION_STATUSES]).default("draft"),
|
|
27
|
+
promotion_template: utils_1.model.json().nullable(),
|
|
28
|
+
campaign_mode: utils_1.model.enum([...constants_1.CAMPAIGN_MODES]).default("none"),
|
|
29
|
+
campaign_id: utils_1.model.text().nullable(),
|
|
30
|
+
campaign_snapshot: utils_1.model.json().nullable(),
|
|
31
|
+
config_version: utils_1.model.number().default(1),
|
|
32
|
+
metadata: utils_1.model.json().nullable(),
|
|
33
|
+
})
|
|
34
|
+
.indexes([
|
|
35
|
+
{
|
|
36
|
+
name: "IDX_coupon_product_config_product_id",
|
|
37
|
+
on: ["product_id"],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "IDX_coupon_product_config_enabled",
|
|
41
|
+
on: ["enabled"],
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
exports.default = CouponProductConfig;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb2R1Y3QtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY291cG9uL21vZGVscy9jb3Vwb24tcHJvZHVjdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFDakQsNENBTXFCO0FBRXJCLE1BQU0sbUJBQW1CLEdBQUcsYUFBSztLQUM5QixNQUFNLENBQUMsdUJBQXVCLEVBQUU7SUFDL0IsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDOUMsT0FBTyxFQUFFLGFBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ3RDLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3hCLFNBQVMsRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25ELGdCQUFnQixFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDeEUsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLHlCQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7SUFDcEUsbUJBQW1CLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFTLENBQUM7SUFDcEQsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsTUFBTSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsVUFBVSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDdEMsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLDJCQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDdEUsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsaUJBQWlCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUMvQiwyQkFBMkIsRUFBRSxhQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RCxxQkFBcUIsRUFBRSxhQUFLO1NBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsa0NBQXNCLENBQUMsQ0FBQztTQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ2xCLGdCQUFnQixFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3RFLGtCQUFrQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0MsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLDBCQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDOUQsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsaUJBQWlCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxjQUFjLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLHNDQUFzQztRQUM1QyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7SUFDRDtRQUNFLElBQUksRUFBRSxtQ0FBbUM7UUFDekMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ2hCO0NBQ0YsQ0FBQyxDQUFBO0FBRUosa0JBQWUsbUJBQW1CLENBQUEifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const CouponProductVariantConfig = utils_1.model
|
|
6
|
+
.define("coupon_product_variant_config", {
|
|
7
|
+
id: utils_1.model.id({ prefix: "cpvcfg" }).primaryKey(),
|
|
8
|
+
enabled: utils_1.model.boolean().default(true),
|
|
9
|
+
product_config_id: utils_1.model.text(),
|
|
10
|
+
variant_id: utils_1.model.text(),
|
|
11
|
+
benefit_type: utils_1.model.enum([...constants_1.BENEFIT_TYPES]).nullable(),
|
|
12
|
+
amounts: utils_1.model.json().nullable(),
|
|
13
|
+
amount: utils_1.model.number().nullable(),
|
|
14
|
+
percentage: utils_1.model.number().nullable(),
|
|
15
|
+
currency_code: utils_1.model.text().nullable(),
|
|
16
|
+
code_strategy: utils_1.model.enum([...constants_1.CODE_STRATEGIES]).nullable(),
|
|
17
|
+
code_prefix: utils_1.model.text().nullable(),
|
|
18
|
+
shared_code: utils_1.model.text().nullable(),
|
|
19
|
+
expiration_policy: utils_1.model.json().nullable(),
|
|
20
|
+
max_issuance_per_order_item: utils_1.model.number().nullable(),
|
|
21
|
+
promotion_mirror_mode: utils_1.model.enum([...constants_1.PROMOTION_MIRROR_MODES]).nullable(),
|
|
22
|
+
config_version: utils_1.model.number().default(1),
|
|
23
|
+
metadata: utils_1.model.json().nullable(),
|
|
24
|
+
})
|
|
25
|
+
.indexes([
|
|
26
|
+
{
|
|
27
|
+
name: "IDX_coupon_product_variant_config_product_config_id",
|
|
28
|
+
on: ["product_config_id"],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "IDX_coupon_product_variant_config_variant_id",
|
|
32
|
+
on: ["variant_id"],
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
exports.default = CouponProductVariantConfig;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb2R1Y3QtdmFyaWFudC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbW9kZWxzL2NvdXBvbi1wcm9kdWN0LXZhcmlhbnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQWlEO0FBQ2pELDRDQUlxQjtBQUVyQixNQUFNLDBCQUEwQixHQUFHLGFBQUs7S0FDckMsTUFBTSxDQUFDLCtCQUErQixFQUFFO0lBQ3ZDLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQy9DLE9BQU8sRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN0QyxpQkFBaUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQy9CLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3hCLFlBQVksRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyx5QkFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDdkQsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsTUFBTSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsVUFBVSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDdEMsYUFBYSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLDJCQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxRCxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxpQkFBaUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLDJCQUEyQixFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDdEQscUJBQXFCLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsa0NBQXNCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN6RSxjQUFjLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEMsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLHFEQUFxRDtRQUMzRCxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztLQUMxQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLDhDQUE4QztRQUNwRCxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7Q0FDRixDQUFDLENBQUE7QUFFSixrQkFBZSwwQkFBMEIsQ0FBQSJ9
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const CouponPromotionMirror = utils_1.model
|
|
6
|
+
.define("coupon_promotion_mirror", {
|
|
7
|
+
id: utils_1.model.id({ prefix: "cpmir" }).primaryKey(),
|
|
8
|
+
config_id: utils_1.model.text(),
|
|
9
|
+
variant_config_id: utils_1.model.text().nullable(),
|
|
10
|
+
promotion_id: utils_1.model.text().nullable(),
|
|
11
|
+
status: utils_1.model.enum([...constants_1.PROMOTION_MIRROR_STATUSES]).default("pending"),
|
|
12
|
+
last_error: utils_1.model.text().nullable(),
|
|
13
|
+
mirrored_at: utils_1.model.dateTime().nullable(),
|
|
14
|
+
metadata: utils_1.model.json().nullable(),
|
|
15
|
+
})
|
|
16
|
+
.indexes([
|
|
17
|
+
{
|
|
18
|
+
name: "IDX_coupon_promotion_mirror_config_id",
|
|
19
|
+
on: ["config_id"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "IDX_coupon_promotion_mirror_promotion_id",
|
|
23
|
+
on: ["promotion_id"],
|
|
24
|
+
},
|
|
25
|
+
]);
|
|
26
|
+
exports.default = CouponPromotionMirror;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb21vdGlvbi1taXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vbW9kZWxzL2NvdXBvbi1wcm9tb3Rpb24tbWlycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQWlEO0FBQ2pELDRDQUF3RDtBQUV4RCxNQUFNLHFCQUFxQixHQUFHLGFBQUs7S0FDaEMsTUFBTSxDQUFDLHlCQUF5QixFQUFFO0lBQ2pDLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzlDLFNBQVMsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ3ZCLGlCQUFpQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsWUFBWSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsTUFBTSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLHFDQUF5QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JFLFVBQVUsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLFdBQVcsRUFBRSxhQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLElBQUksRUFBRSx1Q0FBdUM7UUFDN0MsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDO0tBQ2xCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsMENBQTBDO1FBQ2hELEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQztLQUNyQjtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLHFCQUFxQixDQUFBIn0=
|