tt-entities 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libs/tatayab-entities-library/entities/order.entity.d.ts +1 -0
- package/dist/libs/tatayab-entities-library/entities/order.entity.js +4 -0
- package/dist/libs/tatayab-entities-library/entities/order.entity.js.map +1 -1
- package/libs/tatayab-entities-library/src/entities/order.entity.ts +3 -0
- package/package.json +1 -1
- package/src/database/migrations/20260627000000-add-catalog-search-fulltext-indexes.js +89 -0
- package/src/database/migrations/20260627120000-add-gateway-payment-id-to-orders.js +38 -0
|
@@ -152,6 +152,10 @@ __decorate([
|
|
|
152
152
|
(0, sequelize_typescript_1.Column)({ allowNull: true }),
|
|
153
153
|
__metadata("design:type", String)
|
|
154
154
|
], Order.prototype, "paymentReference", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
(0, sequelize_typescript_1.Column)({ allowNull: true }),
|
|
157
|
+
__metadata("design:type", String)
|
|
158
|
+
], Order.prototype, "gatewayPaymentId", void 0);
|
|
155
159
|
__decorate([
|
|
156
160
|
(0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DATE, allowNull: true }),
|
|
157
161
|
__metadata("design:type", Date)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.entity.js","sourceRoot":"","sources":["../../../../libs/tatayab-entities-library/src/entities/order.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAQ8B;AAC9B,+CAAqC;AACrC,iDAAuC;AACvC,qDAA2C;AAC3C,+DAAoD;AACpD,2DAAgD;AAChD,+EAAmE;AACnE,uEAA4D;AAC5D,iFAAoE;AACpE,iEAAsD;AACtD,2EAA+D;AAGxD,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,4BAAK;
|
|
1
|
+
{"version":3,"file":"order.entity.js","sourceRoot":"","sources":["../../../../libs/tatayab-entities-library/src/entities/order.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,9 @@ export class Order extends Model {
|
|
|
129
129
|
@Column({ allowNull: true })
|
|
130
130
|
declare paymentReference?: string; // Gateway transaction ID
|
|
131
131
|
|
|
132
|
+
@Column({ allowNull: true })
|
|
133
|
+
declare gatewayPaymentId?: string;
|
|
134
|
+
|
|
132
135
|
@Column({ type: DataType.DATE, allowNull: true })
|
|
133
136
|
declare paidAt?: Date;
|
|
134
137
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Migration: add-catalog-search-fulltext-indexes
|
|
5
|
+
*
|
|
6
|
+
* Adds FULLTEXT indexes on all columns searched by the catalog list service,
|
|
7
|
+
* plus a B-tree index on ProductVariants.sku for variant SKU lookup.
|
|
8
|
+
*
|
|
9
|
+
* Aurora MySQL (InnoDB) supports FULLTEXT natively.
|
|
10
|
+
* These are all additive — no existing column or index is modified/dropped.
|
|
11
|
+
*
|
|
12
|
+
* Filename convention: 20260627000000-add-catalog-search-fulltext-indexes.js
|
|
13
|
+
*
|
|
14
|
+
* Apply: npx sequelize-cli db:migrate
|
|
15
|
+
* Revert: npx sequelize-cli db:migrate:undo
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
module.exports = {
|
|
19
|
+
up: async (queryInterface, Sequelize) => {
|
|
20
|
+
// ── 1. Products: name (EN + AR) + SKU ────────────────────────────────
|
|
21
|
+
// Covers: product name search, product SKU search
|
|
22
|
+
await queryInterface.sequelize.query(`
|
|
23
|
+
ALTER TABLE \`Products\`
|
|
24
|
+
ADD FULLTEXT INDEX \`ft_products_name_sku\` (\`nameEn\`, \`nameAr\`, \`sku\`)
|
|
25
|
+
`);
|
|
26
|
+
|
|
27
|
+
// ── 2. Brands: name (EN + AR) ────────────────────────────────────────
|
|
28
|
+
// Covers: brand name search (e.g. "Chanel", "شانيل")
|
|
29
|
+
await queryInterface.sequelize.query(`
|
|
30
|
+
ALTER TABLE \`Brands\`
|
|
31
|
+
ADD FULLTEXT INDEX \`ft_brands_name\` (\`nameEn\`, \`nameAr\`)
|
|
32
|
+
`);
|
|
33
|
+
|
|
34
|
+
// ── 3. Categories: name (EN + AR) ────────────────────────────────────
|
|
35
|
+
// Covers: category name search → BFS expansion to child categories
|
|
36
|
+
await queryInterface.sequelize.query(`
|
|
37
|
+
ALTER TABLE \`Categories\`
|
|
38
|
+
ADD FULLTEXT INDEX \`ft_categories_name\` (\`nameEn\`, \`nameAr\`)
|
|
39
|
+
`);
|
|
40
|
+
|
|
41
|
+
// ── 4. VariantOptions: name (EN + AR) ────────────────────────────────
|
|
42
|
+
// Covers: variant option name search (e.g. "100ml", "أحمر")
|
|
43
|
+
// Joined via ProductVariantOptions → ProductVariants → Products
|
|
44
|
+
await queryInterface.sequelize.query(`
|
|
45
|
+
ALTER TABLE \`VariantOptions\`
|
|
46
|
+
ADD FULLTEXT INDEX \`ft_variant_options_name\` (\`nameEn\`, \`nameAr\`)
|
|
47
|
+
`);
|
|
48
|
+
|
|
49
|
+
// ── 5. ProductVariants: SKU ───────────────────────────────────────────
|
|
50
|
+
// Covers: variant-level SKU search (e.g. "PROD-001-100ML")
|
|
51
|
+
// B-tree index is the right choice here: FULLTEXT on a single short
|
|
52
|
+
// column has no advantage over a regular index for SKU prefix/exact lookups.
|
|
53
|
+
// Skip if index already exists (e.g. added manually earlier).
|
|
54
|
+
await queryInterface.sequelize.query(`
|
|
55
|
+
ALTER TABLE \`ProductVariants\`
|
|
56
|
+
ADD INDEX \`idx_product_variants_sku\` (\`sku\`)
|
|
57
|
+
`);
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
down: async (queryInterface) => {
|
|
61
|
+
// Drop in reverse order — safe even if some were never created
|
|
62
|
+
// (Aurora ignores DROP INDEX on non-existent indexes when using IF EXISTS)
|
|
63
|
+
|
|
64
|
+
await queryInterface.sequelize.query(`
|
|
65
|
+
ALTER TABLE \`ProductVariants\`
|
|
66
|
+
DROP INDEX IF EXISTS \`idx_product_variants_sku\`
|
|
67
|
+
`);
|
|
68
|
+
|
|
69
|
+
await queryInterface.sequelize.query(`
|
|
70
|
+
ALTER TABLE \`VariantOptions\`
|
|
71
|
+
DROP INDEX IF EXISTS \`ft_variant_options_name\`
|
|
72
|
+
`);
|
|
73
|
+
|
|
74
|
+
await queryInterface.sequelize.query(`
|
|
75
|
+
ALTER TABLE \`Categories\`
|
|
76
|
+
DROP INDEX IF EXISTS \`ft_categories_name\`
|
|
77
|
+
`);
|
|
78
|
+
|
|
79
|
+
await queryInterface.sequelize.query(`
|
|
80
|
+
ALTER TABLE \`Brands\`
|
|
81
|
+
DROP INDEX IF EXISTS \`ft_brands_name\`
|
|
82
|
+
`);
|
|
83
|
+
|
|
84
|
+
await queryInterface.sequelize.query(`
|
|
85
|
+
ALTER TABLE \`Products\`
|
|
86
|
+
DROP INDEX IF EXISTS \`ft_products_name_sku\`
|
|
87
|
+
`);
|
|
88
|
+
},
|
|
89
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Migration: add-gateway-payment-id-to-orders
|
|
5
|
+
*
|
|
6
|
+
* Adds `gatewayPaymentId` (nullable VARCHAR 255) to the Orders table.
|
|
7
|
+
*
|
|
8
|
+
* This is a generic column — each payment gateway stores its own
|
|
9
|
+
* payment/session identifier here at order placement time:
|
|
10
|
+
*
|
|
11
|
+
* tabby → payment.id UUID from /api/v2/checkout response
|
|
12
|
+
* taly → can store their order token when needed
|
|
13
|
+
* knet/cc → can store UPayments charge ID when needed
|
|
14
|
+
*
|
|
15
|
+
* Used in confirmPayment() to call gateway-specific post-payment APIs
|
|
16
|
+
* (e.g. Tabby capture) without requiring the frontend to pass it.
|
|
17
|
+
*
|
|
18
|
+
* Filename: 20260627120000-add-gateway-payment-id-to-orders.js
|
|
19
|
+
*
|
|
20
|
+
* Apply: npx sequelize-cli db:migrate
|
|
21
|
+
* Revert: npx sequelize-cli db:migrate:undo
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
module.exports = {
|
|
25
|
+
up: async (queryInterface, Sequelize) => {
|
|
26
|
+
await queryInterface.addColumn('Orders', 'gatewayPaymentId', {
|
|
27
|
+
type: Sequelize.STRING(255),
|
|
28
|
+
allowNull: true,
|
|
29
|
+
defaultValue: null,
|
|
30
|
+
comment: 'Gateway-specific payment/session ID stored at order placement. Tabby: payment UUID for capture API. Taly/UPayments: extensible for future use.',
|
|
31
|
+
after: 'paymentReference',
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
down: async (queryInterface) => {
|
|
36
|
+
await queryInterface.removeColumn('Orders', 'gatewayPaymentId');
|
|
37
|
+
},
|
|
38
|
+
};
|