@lodashventure/medusa-review 1.4.1 → 1.4.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/.medusa/server/src/admin/index.js +22 -11
- package/.medusa/server/src/admin/index.mjs +23 -12
- package/.medusa/server/src/api/middlewares/add-review-aggregates.js +162 -0
- package/.medusa/server/src/api/middlewares.js +23 -1
- package/.medusa/server/src/api/store/reviews/[productId]/route.js +1 -1
- package/.medusa/server/src/api/store/reviews/[productId]/schema/route.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250514002111.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250514010337.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250514020039.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250516011714.js +5 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250516015055.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250516022918.js +2 -2
- package/.medusa/server/src/modules/product-review/migrations/Migration20250517112618.js +2 -2
- package/package.json +17 -31
|
@@ -3,7 +3,6 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
3
3
|
const adminSdk = require("@medusajs/admin-sdk");
|
|
4
4
|
const icons = require("@medusajs/icons");
|
|
5
5
|
const ui = require("@medusajs/ui");
|
|
6
|
-
const reactQuery = require("@tanstack/react-query");
|
|
7
6
|
const Mentions = require("rc-mentions");
|
|
8
7
|
const react = require("react");
|
|
9
8
|
const reactRouterDom = require("react-router-dom");
|
|
@@ -1405,13 +1404,13 @@ const ReviewsPage = () => {
|
|
|
1405
1404
|
}
|
|
1406
1405
|
return ids;
|
|
1407
1406
|
}, [selectedReview]);
|
|
1408
|
-
const
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1407
|
+
const [reviews, setReviews] = react.useState(null);
|
|
1408
|
+
const [isLoading, setIsLoading] = react.useState(true);
|
|
1409
|
+
const [error, setError] = react.useState(null);
|
|
1410
|
+
const fetchReviews = async () => {
|
|
1411
|
+
setIsLoading(true);
|
|
1412
|
+
setError(null);
|
|
1413
|
+
try {
|
|
1415
1414
|
const { data } = await axios$1.get("/admin/reviews", {
|
|
1416
1415
|
params: {
|
|
1417
1416
|
offset: pagination.pageIndex * pagination.pageSize,
|
|
@@ -1419,9 +1418,19 @@ const ReviewsPage = () => {
|
|
|
1419
1418
|
order: "-created_at"
|
|
1420
1419
|
}
|
|
1421
1420
|
});
|
|
1422
|
-
|
|
1421
|
+
setReviews(data);
|
|
1422
|
+
} catch (err) {
|
|
1423
|
+
setError(
|
|
1424
|
+
err instanceof Error ? err : new Error("Failed to fetch reviews")
|
|
1425
|
+
);
|
|
1426
|
+
} finally {
|
|
1427
|
+
setIsLoading(false);
|
|
1423
1428
|
}
|
|
1424
|
-
}
|
|
1429
|
+
};
|
|
1430
|
+
react.useEffect(() => {
|
|
1431
|
+
fetchReviews();
|
|
1432
|
+
}, [offset, limit, pagination.pageIndex, pagination.pageSize]);
|
|
1433
|
+
const refetch = fetchReviews;
|
|
1425
1434
|
const users = react.useMemo(() => {
|
|
1426
1435
|
var _a2;
|
|
1427
1436
|
const _users = reviews == null ? void 0 : reviews.reviews.filter((review) => review.product_id === (selectedReview == null ? void 0 : selectedReview.product_id)).map((review) => {
|
|
@@ -1623,11 +1632,13 @@ const formModule = { customFields: {} };
|
|
|
1623
1632
|
const displayModule = {
|
|
1624
1633
|
displays: {}
|
|
1625
1634
|
};
|
|
1635
|
+
const i18nModule = { resources: {} };
|
|
1626
1636
|
const plugin = {
|
|
1627
1637
|
widgetModule,
|
|
1628
1638
|
routeModule,
|
|
1629
1639
|
menuItemModule,
|
|
1630
1640
|
formModule,
|
|
1631
|
-
displayModule
|
|
1641
|
+
displayModule,
|
|
1642
|
+
i18nModule
|
|
1632
1643
|
};
|
|
1633
1644
|
module.exports = plugin;
|
|
@@ -2,9 +2,8 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { defineRouteConfig } from "@medusajs/admin-sdk";
|
|
3
3
|
import { ChatBubbleLeftRight } from "@medusajs/icons";
|
|
4
4
|
import { FocusModal, clx, ProgressAccordion, StatusBadge, Text, Button, createDataTableColumnHelper, Container, DataTable, Heading, Toaster, createDataTableCommandHelper, toast, useDataTable, Drawer } from "@medusajs/ui";
|
|
5
|
-
import { useQuery } from "@tanstack/react-query";
|
|
6
5
|
import Mentions from "rc-mentions";
|
|
7
|
-
import { useState, useMemo } from "react";
|
|
6
|
+
import { useState, useMemo, useEffect } from "react";
|
|
8
7
|
import { Link } from "react-router-dom";
|
|
9
8
|
import Medusa from "@medusajs/js-sdk";
|
|
10
9
|
function getDefaultExportFromCjs(x) {
|
|
@@ -1401,13 +1400,13 @@ const ReviewsPage = () => {
|
|
|
1401
1400
|
}
|
|
1402
1401
|
return ids;
|
|
1403
1402
|
}, [selectedReview]);
|
|
1404
|
-
const
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1403
|
+
const [reviews, setReviews] = useState(null);
|
|
1404
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
1405
|
+
const [error, setError] = useState(null);
|
|
1406
|
+
const fetchReviews = async () => {
|
|
1407
|
+
setIsLoading(true);
|
|
1408
|
+
setError(null);
|
|
1409
|
+
try {
|
|
1411
1410
|
const { data } = await axios$1.get("/admin/reviews", {
|
|
1412
1411
|
params: {
|
|
1413
1412
|
offset: pagination.pageIndex * pagination.pageSize,
|
|
@@ -1415,9 +1414,19 @@ const ReviewsPage = () => {
|
|
|
1415
1414
|
order: "-created_at"
|
|
1416
1415
|
}
|
|
1417
1416
|
});
|
|
1418
|
-
|
|
1417
|
+
setReviews(data);
|
|
1418
|
+
} catch (err) {
|
|
1419
|
+
setError(
|
|
1420
|
+
err instanceof Error ? err : new Error("Failed to fetch reviews")
|
|
1421
|
+
);
|
|
1422
|
+
} finally {
|
|
1423
|
+
setIsLoading(false);
|
|
1419
1424
|
}
|
|
1420
|
-
}
|
|
1425
|
+
};
|
|
1426
|
+
useEffect(() => {
|
|
1427
|
+
fetchReviews();
|
|
1428
|
+
}, [offset, limit, pagination.pageIndex, pagination.pageSize]);
|
|
1429
|
+
const refetch = fetchReviews;
|
|
1421
1430
|
const users = useMemo(() => {
|
|
1422
1431
|
var _a2;
|
|
1423
1432
|
const _users = reviews == null ? void 0 : reviews.reviews.filter((review) => review.product_id === (selectedReview == null ? void 0 : selectedReview.product_id)).map((review) => {
|
|
@@ -1619,12 +1628,14 @@ const formModule = { customFields: {} };
|
|
|
1619
1628
|
const displayModule = {
|
|
1620
1629
|
displays: {}
|
|
1621
1630
|
};
|
|
1631
|
+
const i18nModule = { resources: {} };
|
|
1622
1632
|
const plugin = {
|
|
1623
1633
|
widgetModule,
|
|
1624
1634
|
routeModule,
|
|
1625
1635
|
menuItemModule,
|
|
1626
1636
|
formModule,
|
|
1627
|
-
displayModule
|
|
1637
|
+
displayModule,
|
|
1638
|
+
i18nModule
|
|
1628
1639
|
};
|
|
1629
1640
|
export {
|
|
1630
1641
|
plugin as default
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addReviewAggregates = addReviewAggregates;
|
|
4
|
+
/**
|
|
5
|
+
* Middleware to add review aggregates to product responses
|
|
6
|
+
* This enhances product payloads with review ratings and counts
|
|
7
|
+
* for Schema.org structured data
|
|
8
|
+
*/
|
|
9
|
+
async function addReviewAggregates(req, res, next) {
|
|
10
|
+
try {
|
|
11
|
+
const originalJson = res.json.bind(res);
|
|
12
|
+
res.json = async function (data) {
|
|
13
|
+
try {
|
|
14
|
+
// Handle single product response
|
|
15
|
+
if (data?.product && !Array.isArray(data.product)) {
|
|
16
|
+
data.product = await enrichProductWithReviews(req, data.product);
|
|
17
|
+
}
|
|
18
|
+
// Handle products array response
|
|
19
|
+
if (data?.products && Array.isArray(data.products)) {
|
|
20
|
+
data.products = await Promise.all(data.products.map((product) => enrichProductWithReviews(req, product)));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error("Error adding review aggregates:", error?.message || error);
|
|
25
|
+
// Continue with original data on error
|
|
26
|
+
}
|
|
27
|
+
return originalJson(data);
|
|
28
|
+
};
|
|
29
|
+
next();
|
|
30
|
+
}
|
|
31
|
+
catch (middlewareError) {
|
|
32
|
+
console.error("Error in addReviewAggregates middleware:", middlewareError);
|
|
33
|
+
next(middlewareError);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get empty review aggregate
|
|
38
|
+
*/
|
|
39
|
+
function getEmptyReviewAggregate() {
|
|
40
|
+
return {
|
|
41
|
+
average_rating: 0,
|
|
42
|
+
review_count: 0,
|
|
43
|
+
rating_distribution: {
|
|
44
|
+
1: 0,
|
|
45
|
+
2: 0,
|
|
46
|
+
3: 0,
|
|
47
|
+
4: 0,
|
|
48
|
+
5: 0,
|
|
49
|
+
},
|
|
50
|
+
reviews: [],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Enrich a single product with review aggregate information
|
|
55
|
+
*/
|
|
56
|
+
async function enrichProductWithReviews(req, product) {
|
|
57
|
+
if (!product || !product.id) {
|
|
58
|
+
return product;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
// Try to resolve the review module service
|
|
62
|
+
let reviewService;
|
|
63
|
+
try {
|
|
64
|
+
reviewService = req.scope.resolve("productReview");
|
|
65
|
+
}
|
|
66
|
+
catch (resolveError) {
|
|
67
|
+
// Review service not available - skip enrichment
|
|
68
|
+
return {
|
|
69
|
+
...product,
|
|
70
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (!reviewService || !reviewService.listReviews) {
|
|
74
|
+
return {
|
|
75
|
+
...product,
|
|
76
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Fetch approved reviews for this product
|
|
80
|
+
let reviews;
|
|
81
|
+
try {
|
|
82
|
+
reviews = await reviewService.listReviews({
|
|
83
|
+
product_id: product.id,
|
|
84
|
+
status: "approved",
|
|
85
|
+
parent: null, // Only top-level reviews (not replies)
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (reviewFetchError) {
|
|
89
|
+
console.error(`Error fetching reviews for product ${product.id}:`, reviewFetchError);
|
|
90
|
+
return {
|
|
91
|
+
...product,
|
|
92
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (!reviews || !Array.isArray(reviews)) {
|
|
96
|
+
return {
|
|
97
|
+
...product,
|
|
98
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Calculate aggregate rating
|
|
102
|
+
const reviewsWithRating = reviews.filter((r) => r.rating !== null && r.rating !== undefined && r.rating > 0);
|
|
103
|
+
if (reviewsWithRating.length === 0) {
|
|
104
|
+
return {
|
|
105
|
+
...product,
|
|
106
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Calculate average rating
|
|
110
|
+
const totalRating = reviewsWithRating.reduce((sum, review) => sum + (review.rating || 0), 0);
|
|
111
|
+
const averageRating = totalRating / reviewsWithRating.length;
|
|
112
|
+
// Calculate rating distribution
|
|
113
|
+
const ratingDistribution = {
|
|
114
|
+
1: 0,
|
|
115
|
+
2: 0,
|
|
116
|
+
3: 0,
|
|
117
|
+
4: 0,
|
|
118
|
+
5: 0,
|
|
119
|
+
};
|
|
120
|
+
reviewsWithRating.forEach((review) => {
|
|
121
|
+
const rating = Math.round(review.rating);
|
|
122
|
+
if (rating >= 1 && rating <= 5) {
|
|
123
|
+
ratingDistribution[rating]++;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
// Format reviews for Schema.org (limit to 10)
|
|
127
|
+
const formattedReviews = reviewsWithRating
|
|
128
|
+
.slice(0, 10)
|
|
129
|
+
.map((review) => ({
|
|
130
|
+
id: review.id,
|
|
131
|
+
rating: review.rating,
|
|
132
|
+
title: review.title || null,
|
|
133
|
+
content: review.content || "",
|
|
134
|
+
author_name: review.customer_id
|
|
135
|
+
? "ลูกค้าที่ได้รับการยืนยัน"
|
|
136
|
+
: "ผู้ดูแลระบบ",
|
|
137
|
+
date_published: review.created_at
|
|
138
|
+
? new Date(review.created_at).toISOString().split("T")[0]
|
|
139
|
+
: new Date().toISOString().split("T")[0],
|
|
140
|
+
is_admin: review.is_admin || false,
|
|
141
|
+
}));
|
|
142
|
+
// Add review aggregate to product
|
|
143
|
+
return {
|
|
144
|
+
...product,
|
|
145
|
+
review_aggregate: {
|
|
146
|
+
average_rating: Math.round(averageRating * 10) / 10, // Round to 1 decimal
|
|
147
|
+
review_count: reviewsWithRating.length,
|
|
148
|
+
rating_distribution: ratingDistribution,
|
|
149
|
+
reviews: formattedReviews,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error(`Error enriching product ${product.id} with reviews:`, error?.message || error);
|
|
155
|
+
// Fallback: return product without review data
|
|
156
|
+
return {
|
|
157
|
+
...product,
|
|
158
|
+
review_aggregate: getEmptyReviewAggregate(),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJldmlldy1hZ2dyZWdhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9taWRkbGV3YXJlcy9hZGQtcmV2aWV3LWFnZ3JlZ2F0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxrREF1Q0M7QUE1Q0Q7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsSUFBd0I7SUFFeEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkMsR0FBVyxDQUFDLElBQUksR0FBRyxLQUFLLFdBQVcsSUFBUztZQUMzQyxJQUFJLENBQUM7Z0JBQ0gsaUNBQWlDO2dCQUNqQyxJQUFJLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sd0JBQXdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztnQkFFRCxpQ0FBaUM7Z0JBQ2pDLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUNqQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQ3ZDLENBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQ1gs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
|
|
@@ -8,6 +8,7 @@ const route_1 = require("./store/reviews/route");
|
|
|
8
8
|
const route_2 = require("./admin/reviews/status/route");
|
|
9
9
|
const multer_1 = __importDefault(require("multer"));
|
|
10
10
|
const getReviewsWorkflow_1 = require("../workflows/review/getReviewsWorkflow");
|
|
11
|
+
const add_review_aggregates_1 = require("./middlewares/add-review-aggregates");
|
|
11
12
|
const upload = (0, multer_1.default)({ storage: multer_1.default.memoryStorage() });
|
|
12
13
|
exports.default = (0, http_1.defineMiddlewares)({
|
|
13
14
|
routes: [
|
|
@@ -72,6 +73,27 @@ exports.default = (0, http_1.defineMiddlewares)({
|
|
|
72
73
|
}),
|
|
73
74
|
],
|
|
74
75
|
},
|
|
76
|
+
// Add review aggregates to product endpoints
|
|
77
|
+
{
|
|
78
|
+
matcher: "/store/products",
|
|
79
|
+
method: "GET",
|
|
80
|
+
middlewares: [add_review_aggregates_1.addReviewAggregates],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
matcher: "/store/products/:id",
|
|
84
|
+
method: "GET",
|
|
85
|
+
middlewares: [add_review_aggregates_1.addReviewAggregates],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
matcher: "/admin/products",
|
|
89
|
+
method: "GET",
|
|
90
|
+
middlewares: [add_review_aggregates_1.addReviewAggregates],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
matcher: "/admin/products/:id",
|
|
94
|
+
method: "GET",
|
|
95
|
+
middlewares: [add_review_aggregates_1.addReviewAggregates],
|
|
96
|
+
},
|
|
75
97
|
],
|
|
76
98
|
});
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbURBS2tDO0FBQ2xDLGlEQUE4RDtBQUM5RCx3REFBa0Y7QUFDbEYsb0RBQTRCO0FBQzVCLCtFQUEwRTtBQUMxRSwrRUFBMEU7QUFFMUUsTUFBTSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxFQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRTNELGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDaEIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixXQUFXLEVBQUU7Z0JBQ1gsSUFBQSxtQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0MsYUFBYTtnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDckIsSUFBQSwrQkFBd0IsRUFBQyw2QkFBNEIsQ0FBQzthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDaEIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixXQUFXLEVBQUU7Z0JBQ1gsSUFBQSxtQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDL0MsYUFBYTtnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDckIsSUFBQSwrQkFBd0IsRUFBQyw2QkFBNEIsQ0FBQzthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNoQixXQUFXLEVBQUU7Z0JBQ1gsSUFBQSwrQkFBd0IsRUFBQywwQ0FBeUMsQ0FBQzthQUNwRTtTQUNGO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDZixPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRTtnQkFDWCxJQUFBLGdDQUF5QixFQUFDLHFDQUF1QixFQUFFO29CQUNqRCxRQUFRLEVBQUU7d0JBQ1IsR0FBRzt3QkFDSCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixZQUFZO3dCQUNaLG1CQUFtQjtxQkFDcEI7b0JBQ0QsTUFBTSxFQUFFLElBQUk7aUJBQ2IsQ0FBQzthQUNIO1NBQ0Y7UUFDRDtZQUNFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNmLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsV0FBVyxFQUFFO2dCQUNYLElBQUEsZ0NBQXlCLEVBQUMscUNBQXVCLEVBQUU7b0JBQ2pELFFBQVEsRUFBRTt3QkFDUixHQUFHO3dCQUNILGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFlBQVk7d0JBQ1osbUJBQW1CO3FCQUNwQjtvQkFDRCxNQUFNLEVBQUUsSUFBSTtpQkFDYixDQUFDO2FBQ0g7U0FDRjtRQUNELDZDQUE2QztRQUM3QztZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsQ0FBQywyQ0FBbUIsQ0FBQztTQUNuQztRQUNEO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxDQUFDLDJDQUFtQixDQUFDO1NBQ25DO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLENBQUMsMkNBQW1CLENBQUM7U0FDbkM7UUFDRDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsQ0FBQywyQ0FBbUIsQ0FBQztTQUNuQztLQUNGO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -23,4 +23,4 @@ const GET = async (req, res) => {
|
|
|
23
23
|
});
|
|
24
24
|
};
|
|
25
25
|
exports.GET = GET;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Jldmlld3MvW3Byb2R1Y3RJZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsd0ZBQXFGO0FBQ3JGLDZEQUF3RTtBQUVqRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSx1Q0FBa0IsR0FBRSxDQUFDLEdBQUcsQ0FBQztRQUNoRCxLQUFLLEVBQUU7WUFDTCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixNQUFNLEVBQUUsVUFBVTtnQkFDbEIsTUFBTSxFQUFFLElBQUk7YUFDYjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsNkNBQTZDO0lBQzdDLE1BQU0sZUFBZSxHQUFHLElBQUEscUNBQXdCLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxHQUFHLE1BQU07UUFDVCxlQUFlO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXJCVyxRQUFBLEdBQUcsT0FxQmQifQ==
|
|
@@ -85,7 +85,7 @@ const GET = async (req, res) => {
|
|
|
85
85
|
const schema = (0, schema_org_1.generateProductWithReviewsSchema)({
|
|
86
86
|
productName: product.title,
|
|
87
87
|
productUrl,
|
|
88
|
-
productDescription: product.description,
|
|
88
|
+
productDescription: product.description ?? undefined,
|
|
89
89
|
productImage,
|
|
90
90
|
reviews: formattedReviews,
|
|
91
91
|
aggregateRating: aggregateRating || undefined,
|
|
@@ -100,4 +100,4 @@ const GET = async (req, res) => {
|
|
|
100
100
|
});
|
|
101
101
|
};
|
|
102
102
|
exports.GET = GET;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Jldmlld3MvW3Byb2R1Y3RJZF0vc2NoZW1hL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJGQUF3RjtBQUN4RixnRUFHeUM7QUFDekMscURBQW9EO0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2pDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUQsMEJBQTBCO0lBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7UUFDOUQsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO1FBQ2hELFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUN0QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxtQkFBbUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLHVDQUFrQixHQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2hELEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRTtnQkFDWCxHQUFHLEdBQUcsQ0FBQyxXQUFXO2dCQUNsQixVQUFVLEVBQUU7b0JBQ1YsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVU7b0JBQzlCLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7aUJBQzlCO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLE1BQU0sRUFBRSxVQUFVO2dCQUNsQixNQUFNLEVBQUUsSUFBSSxFQUFFLDJDQUEyQzthQUMxRDtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFbEMsdUNBQXVDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLE9BQU87U0FDeEIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQ25DLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sU0FBUyxHQUNiLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNwQixDQUFDLENBQUMsTUFBTSxlQUFlLENBQUMsYUFBYSxDQUNqQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFDbkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUN2RDtRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFVCwrQ0FBK0M7SUFDL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQ3pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBRUYsc0RBQXNEO0lBQ3RELE1BQU0sT0FBTyxHQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLGdDQUFnQyxDQUFDO0lBQ2pFLE1BQU0sVUFBVSxHQUFHLEdBQUcsT0FBTyxhQUFhLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBRTlDLGdDQUFnQztJQUNoQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQUcsUUFBUTtZQUN6QixDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDakUsV0FBVztZQUNiLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsYUFBYTtnQkFDZixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWxCLE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFVBQVU7YUFDakI7WUFDRCxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUN4RCxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDMUIsVUFBVTtTQUNYLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILDZCQUE2QjtJQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFBLHFDQUF3QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTFELCtCQUErQjtJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFBLDZDQUFnQyxFQUFDO1FBQzlDLFdBQVcsRUFBRSxPQUFPLENBQUMsS0FBSztRQUMxQixVQUFVO1FBQ1Ysa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxTQUFTO1FBQ3BELFlBQVk7UUFDWixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLGVBQWUsRUFBRSxlQUFlLElBQUksU0FBUztLQUM5QyxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsTUFBTTtRQUNOLElBQUksRUFBRTtZQUNKLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVztZQUM1QyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsV0FBVztTQUNsRDtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXpHVyxRQUFBLEdBQUcsT0F5R2QifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250514002111 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250514002111 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`create table if not exists "review" ("id" text not null, "title" text null, "content" text not null, "rating" real not null, "first_name" text not null, "last_name" text not null, "status" text check ("status" in ('pending', 'approved', 'rejected')) not null default 'pending', "product_id" text not null, "customer_id" text null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "review_pkey" primary key ("id"), constraint rating_range check (rating >= 1 AND rating <= 5));`);
|
|
@@ -13,4 +13,4 @@ class Migration20250514002111 extends migrations_1.Migration {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.Migration20250514002111 = Migration20250514002111;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTQwMDIxMTEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE0MDAyMTExLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCx3akJBQXdqQixDQUN6akIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsdUdBQXVHLENBQ3hHLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHVHQUF1RyxDQUN4RyxDQUFDO0lBQ0osQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFoQkQsMERBZ0JDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250514010337 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250514010337 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`create table if not exists "review_media" ("id" text not null, "fileId" text not null, "mimeType" text not null, "review_id" text not null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "review_media_pkey" primary key ("id"));`);
|
|
@@ -14,4 +14,4 @@ class Migration20250514010337 extends migrations_1.Migration {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.Migration20250514010337 = Migration20250514010337;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTQwMTAzMzcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE0MDEwMzM3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrVUFBa1UsQ0FDblUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsaUhBQWlILENBQ2xILENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULG1IQUFtSCxDQUNwSCxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FDVCxnTEFBZ0wsQ0FDakwsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBcEJELDBEQW9CQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250514020039 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250514020039 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "review" drop column if exists "first_name", drop column if exists "last_name";`);
|
|
@@ -11,4 +11,4 @@ class Migration20250514020039 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250514020039 = Migration20250514020039;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTQwMjAwMzkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE0MDIwMDM5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCx1R0FBdUcsQ0FDeEcsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUNULHlJQUF5SSxDQUMxSSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBWkQsMERBWUMifQ==
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250516011714 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250516011714 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "review" add column if not exists "parent_id" text null;`);
|
|
8
8
|
this.addSql(`alter table if exists "review" add constraint "review_parent_id_foreign" foreign key ("parent_id") references "review" ("id") on update cascade on delete set null;`);
|
|
9
9
|
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_review_parent_id" ON "review" (parent_id) WHERE deleted_at IS NULL;`);
|
|
10
|
+
this.addSql(`alter table if exists "review" add column if not exists "parent_id" text null;`);
|
|
11
|
+
this.addSql(`alter table if exists "review" add constraint "review_parent_id_foreign" foreign key ("parent_id") references "review" ("id") on update cascade on delete set null;`);
|
|
12
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_review_parent_id" ON "review" (parent_id) WHERE deleted_at IS NULL;`);
|
|
10
13
|
}
|
|
11
14
|
async down() {
|
|
12
15
|
this.addSql(`alter table if exists "review" drop constraint if exists "review_parent_id_foreign";`);
|
|
@@ -15,4 +18,4 @@ class Migration20250516011714 extends migrations_1.Migration {
|
|
|
15
18
|
}
|
|
16
19
|
}
|
|
17
20
|
exports.Migration20250516011714 = Migration20250516011714;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTYwMTE3MTQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE2MDExNzE0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxnRkFBZ0YsQ0FDakYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QscUtBQXFLLENBQ3RLLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFHQUFxRyxDQUN0RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxnRkFBZ0YsQ0FDakYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QscUtBQXFLLENBQ3RLLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFHQUFxRyxDQUN0RyxDQUFDO0lBQ0osQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQ1Qsc0ZBQXNGLENBQ3ZGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtRUFBbUUsQ0FDcEUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhDRCwwREFnQ0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250516015055 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250516015055 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "review" alter column "rating" type real using ("rating"::real);`);
|
|
@@ -13,4 +13,4 @@ class Migration20250516015055 extends migrations_1.Migration {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.Migration20250516015055 = Migration20250516015055;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTYwMTUwNTUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE2MDE1MDU1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCx3RkFBd0YsQ0FDekYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QscUVBQXFFLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FDVCx3RkFBd0YsQ0FDekYsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1Qsb0VBQW9FLENBQ3JFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsQkQsMERBa0JDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250516022918 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250516022918 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "review" add column if not exists "is_admin" boolean null;`);
|
|
@@ -11,4 +11,4 @@ class Migration20250516022918 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250516022918 = Migration20250516022918;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTYwMjI5MTguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE2MDIyOTE4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrRkFBa0YsQ0FDbkYsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUNULGtFQUFrRSxDQUNuRSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBWkQsMERBWUMifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migration20250517112618 = void 0;
|
|
4
|
-
const migrations_1 = require("@
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
5
|
class Migration20250517112618 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "review_media" add column if not exists "fileUrl" text not null;`);
|
|
@@ -11,4 +11,4 @@ class Migration20250517112618 extends migrations_1.Migration {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.Migration20250517112618 = Migration20250517112618;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA1MTcxMTI2MTguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LXJldmlldy9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUwNTE3MTEyNjE4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCx3RkFBd0YsQ0FDekYsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUNULHVFQUF1RSxDQUN4RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBWkQsMERBWUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodashventure/medusa-review",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "A starter for Medusa plugins.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,28 +25,22 @@
|
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "medusa plugin:build",
|
|
28
|
-
"dev": "medusa plugin:develop"
|
|
28
|
+
"dev": "medusa plugin:develop",
|
|
29
|
+
"prepublishOnly": "medusa plugin:build"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@medusajs/admin-sdk": "2.
|
|
32
|
-
"@medusajs/cli": "2.
|
|
33
|
-
"@medusajs/framework": "2.
|
|
34
|
-
"@medusajs/icons": "^2.
|
|
35
|
-
"@medusajs/medusa": "2.
|
|
36
|
-
"@medusajs/test-utils": "2.
|
|
32
|
+
"@medusajs/admin-sdk": "2.11.1",
|
|
33
|
+
"@medusajs/cli": "2.11.1",
|
|
34
|
+
"@medusajs/framework": "2.11.1",
|
|
35
|
+
"@medusajs/icons": "^2.11.1",
|
|
36
|
+
"@medusajs/medusa": "2.11.1",
|
|
37
|
+
"@medusajs/test-utils": "2.11.1",
|
|
37
38
|
"@medusajs/ui": "4.0.4",
|
|
38
|
-
"@mikro-orm/cli": "6.4.3",
|
|
39
|
-
"@mikro-orm/core": "6.4.3",
|
|
40
|
-
"@mikro-orm/knex": "6.4.3",
|
|
41
|
-
"@mikro-orm/migrations": "6.4.3",
|
|
42
|
-
"@mikro-orm/postgresql": "6.4.3",
|
|
43
39
|
"@swc/core": "1.5.7",
|
|
44
40
|
"@types/multer": "^1.4.12",
|
|
45
41
|
"@types/node": "^20.0.0",
|
|
46
42
|
"@types/react": "^18.3.2",
|
|
47
43
|
"@types/react-dom": "^18.2.25",
|
|
48
|
-
"awilix": "^8.0.1",
|
|
49
|
-
"pg": "^8.13.0",
|
|
50
44
|
"prop-types": "^15.8.1",
|
|
51
45
|
"react": "^18.2.0",
|
|
52
46
|
"react-dom": "^18.2.0",
|
|
@@ -56,21 +50,13 @@
|
|
|
56
50
|
"yalc": "^1.0.0-pre.53"
|
|
57
51
|
},
|
|
58
52
|
"peerDependencies": {
|
|
59
|
-
"@medusajs/admin-sdk": "2.
|
|
60
|
-
"@medusajs/cli": "2.
|
|
61
|
-
"@medusajs/framework": "2.
|
|
62
|
-
"@medusajs/icons": "^2.
|
|
63
|
-
"@medusajs/medusa": "2.
|
|
64
|
-
"@medusajs/test-utils": "2.
|
|
65
|
-
"@medusajs/ui": "4.0.3"
|
|
66
|
-
"@tanstack/react-query": "*",
|
|
67
|
-
"@mikro-orm/cli": "6.4.3",
|
|
68
|
-
"@mikro-orm/core": "6.4.3",
|
|
69
|
-
"@mikro-orm/knex": "6.4.3",
|
|
70
|
-
"@mikro-orm/migrations": "6.4.3",
|
|
71
|
-
"@mikro-orm/postgresql": "6.4.3",
|
|
72
|
-
"awilix": "^8.0.1",
|
|
73
|
-
"pg": "^8.13.0"
|
|
53
|
+
"@medusajs/admin-sdk": "2.11.1",
|
|
54
|
+
"@medusajs/cli": "2.11.1",
|
|
55
|
+
"@medusajs/framework": "2.11.1",
|
|
56
|
+
"@medusajs/icons": "^2.11.1",
|
|
57
|
+
"@medusajs/medusa": "2.11.1",
|
|
58
|
+
"@medusajs/test-utils": "2.11.1",
|
|
59
|
+
"@medusajs/ui": "4.0.3"
|
|
74
60
|
},
|
|
75
61
|
"engines": {
|
|
76
62
|
"node": ">=20"
|
|
@@ -79,4 +65,4 @@
|
|
|
79
65
|
"multer": "^1.4.5-lts.2",
|
|
80
66
|
"rc-mentions": "^2.20.0"
|
|
81
67
|
}
|
|
82
|
-
}
|
|
68
|
+
}
|