Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ad74b6b70 | ||
|
|
d1d007fc7d | ||
|
|
11ac6d7949 | ||
|
|
093ae419d5 | ||
|
|
2b0d50c3d0 | ||
|
|
8126bb3d81 | ||
|
|
dedf4f0963 | ||
|
|
601378a77e |
No files matched your search
@@ -22,9 +22,14 @@ import { csvRowsToObjects, parseCsv } from "../../../lib/csv";
|
|||||||
//
|
//
|
||||||
// Las fotos se descargan del origen y se re-alojan en el mismo
|
// Las fotos se descargan del origen y se re-alojan en el mismo
|
||||||
// MinIO/S3 que ya usa el resto del catalogo (uploadFilesWorkflow ->
|
// MinIO/S3 que ya usa el resto del catalogo (uploadFilesWorkflow ->
|
||||||
// mismo File Module Provider de medusa-config.ts, ya corre en el NAS),
|
// mismo File Module Provider de medusa-config.ts, ya corre en el NAS).
|
||||||
// bajo el prefijo import-products/ para separarlas de ari-products/
|
// El bucket (S3_BUCKET=ari-products) es plano -- el provider de S3 de
|
||||||
// (subidas manuales desde el Admin).
|
// Medusa descarta cualquier subcarpeta del filename (usa solo
|
||||||
|
// path.parse().name + ulid, confirmado leyendo
|
||||||
|
// @medusajs/file-s3/dist/services/s3-file.js), asi que no hay una
|
||||||
|
// carpeta separada real para lo importado -- queda mezclado con el
|
||||||
|
// resto de fotos del catalogo, mismo criterio de nombres unicos por
|
||||||
|
// ulid que ya usa todo el sitio.
|
||||||
|
|
||||||
const MAX_IMAGE_BYTES = 8 * 1024 * 1024;
|
const MAX_IMAGE_BYTES = 8 * 1024 * 1024;
|
||||||
const IMAGE_FETCH_TIMEOUT_MS = 15000;
|
const IMAGE_FETCH_TIMEOUT_MS = 15000;
|
||||||
@@ -116,8 +121,13 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo
|
|||||||
stockLocationService.listStockLocations({}),
|
stockLocationService.listStockLocations({}),
|
||||||
fulfillmentService.listShippingProfiles({}),
|
fulfillmentService.listShippingProfiles({}),
|
||||||
salesChannelService.listSalesChannels({}),
|
salesChannelService.listSalesChannels({}),
|
||||||
productService.listProductCategories({}),
|
// select explicito -- sin el, name/title llegaban undefined (el
|
||||||
productService.listProductCollections({}),
|
// default de estos module services no siempre trae todos los
|
||||||
|
// escalares, a diferencia de la capa HTTP del Admin API, confirmado
|
||||||
|
// en vivo: la ruta /admin/product-categories con fields=id,name si
|
||||||
|
// los trae completos).
|
||||||
|
productService.listProductCategories({}, { select: ["id", "name"] }),
|
||||||
|
productService.listProductCollections({}, { select: ["id", "title"] }),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const locationId = locations[0]?.id;
|
const locationId = locations[0]?.id;
|
||||||
@@ -131,8 +141,12 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const categoryByName = new Map(categories.map((c) => [c.name.toLowerCase().trim(), c.id]));
|
const categoryByName = new Map(
|
||||||
const collectionByName = new Map(collections.map((c) => [c.title.toLowerCase().trim(), c.id]));
|
categories.filter((c) => c.name).map((c) => [c.name.toLowerCase().trim(), c.id]),
|
||||||
|
);
|
||||||
|
const collectionByName = new Map(
|
||||||
|
collections.filter((c) => c.title).map((c) => [c.title.toLowerCase().trim(), c.id]),
|
||||||
|
);
|
||||||
|
|
||||||
const results: RowResult[] = [];
|
const results: RowResult[] = [];
|
||||||
|
|
||||||
@@ -155,7 +169,7 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo
|
|||||||
const { result: uploadedFiles } = await uploadFilesWorkflow(req.scope).run({
|
const { result: uploadedFiles } = await uploadFilesWorkflow(req.scope).run({
|
||||||
input: {
|
input: {
|
||||||
files: downloaded.map((file, i) => ({
|
files: downloaded.map((file, i) => ({
|
||||||
filename: `import-products/${Date.now()}-${index}-${i}.${file.extension}`,
|
filename: `${Date.now()}-${index}-${i}.${file.extension}`,
|
||||||
mimeType: file.mimeType,
|
mimeType: file.mimeType,
|
||||||
content: file.content,
|
content: file.content,
|
||||||
access: "public" as const,
|
access: "public" as const,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ spec:
|
|||||||
memory: 64Mi
|
memory: 64Mi
|
||||||
|
|
||||||
- name: migrations
|
- name: migrations
|
||||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.218
|
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.221
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command:
|
command:
|
||||||
- node
|
- node
|
||||||
@@ -86,7 +86,7 @@ spec:
|
|||||||
|
|
||||||
containers:
|
containers:
|
||||||
- name: app
|
- name: app
|
||||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.218
|
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.221
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
envFrom:
|
envFrom:
|
||||||
- configMapRef:
|
- configMapRef:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ spec:
|
|||||||
runAsUser: 1001
|
runAsUser: 1001
|
||||||
containers:
|
containers:
|
||||||
- name: app
|
- name: app
|
||||||
image: gitea.cruzcloud.net/devops/ecommerce-frontend:v1.0.216
|
image: gitea.cruzcloud.net/devops/ecommerce-frontend:v1.0.219
|
||||||
env:
|
env:
|
||||||
- name: HEADLESS_PROVIDER
|
- name: HEADLESS_PROVIDER
|
||||||
value: medusa
|
value: medusa
|
||||||
|
|||||||
Reference in new issue
Block a user