Repository navigation
Conversation
…ductResponse para obtener correctamente detalles de un producto
📝 WalkthroughWalkthroughSe amplió la respuesta de productos para incluir metadatos de la tienda ( Changes
Estimated code review effort🎯 3 (Moderado) | ⏱️ ~20 minutos Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
📝 Coding Plan
Comment Tip CodeRabbit can use your project's `biome` configuration to improve the quality of JS/TS/CSS/JSON code reviews.Add a configuration file to your project to customize how CodeRabbit runs |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/modules/commerce/products/product.service.js (1)
627-712: Eliminar código comentado.Este bloque de ~85 líneas contiene una implementación alternativa de
getProductByIdServiceque ya no es necesaria. La implementación activa (líneas 613-624) ya incorpora los cambios requeridos para el ticket OM-89 mediante el uso dePRODUCT_RESPONSE_SELECTymapProductResponse.Mantener código comentado genera confusión y dificulta el mantenimiento. Si se necesita referencia histórica, el control de versiones (Git) cumple esa función.
🧹 Eliminar código comentado
- - -//---ESTE SERVICE LO HIZO LEO PARA TRAER MAS DETALLES DEL PRODUCTO, BASADO EN LO QUE EXIGE EL TICKET OM-89 DEL SPRINT 2--- - -/** - * - -export const getProductByIdService = async (id)=>{ - - const productId = Number(id); - - if(!Number.isInteger(productId) || productId <= 0){ - - throw { - status:400, - message:"ID de producto inválido" - }; - - } - - const product = await prisma.products.findFirst({ - - where:{ - id_product:productId, - status:true, - visible:true - }, - - select:{ - - id_product:true, - name:true, - description:true, - price:true, - fk_store:true, - visible:true, - quantity:true, - created_at:true, - updated_at:true, - - product_category:{ - select:{ - id_product_category:true, - name:true, - status:true - } - }, - - store: { - select:{ - id_store:true, - name:true - //logo:true - } - }, - - product_tag_relations:{ - where:{status:true}, - - select:{ - product_tag:{ - select:{ - id_product_tag:true, - name:true - } - } - } - - }, - product_reviews: { - where: { status: true, approved: true }, - select: { rating: true } - } - - } - - }); - - if(!product){ - - return null; - - } - - return mapProductResponse(product); - -}; - */🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/modules/commerce/products/product.service.js` around lines 627 - 712, Eliminar el bloque de código comentado que contiene la implementación alternativa de getProductByIdService (las ~85 líneas dentro del comentario) porque la versión activa ya usa PRODUCT_RESPONSE_SELECT y mapProductResponse; simplemente borra todo el comentario multilínea para evitar confusión y dejar solo la implementación activa de getProductByIdService.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@src/modules/commerce/products/product.service.js`:
- Around line 627-712: Eliminar el bloque de código comentado que contiene la
implementación alternativa de getProductByIdService (las ~85 líneas dentro del
comentario) porque la versión activa ya usa PRODUCT_RESPONSE_SELECT y
mapProductResponse; simplemente borra todo el comentario multilínea para evitar
confusión y dejar solo la implementación activa de getProductByIdService.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 17a3a28d-4b8a-43b9-9721-1841da6adbcf
📒 Files selected for processing (1)
src/modules/commerce/products/product.service.js
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/modules/commerce/products/product.service.js (1)
212-220: Inconsistencia en el nombre del campo entre endpoints.La respuesta mapeada usa
commerce: { id, name }, pero engetProductsSearchService(líneas 592-597) la respuesta retornastore: { id_store, name }directamente del resultado de Prisma. Esto genera inconsistencia en la API:
GET /products/:id→commerce.id,commerce.nameGET /products?search=...→store.id_store,store.nameLos consumidores de la API tendrán que manejar diferentes nombres de campos para el mismo concepto.
♻️ Sugerencia: aplicar mapProductResponse también en búsqueda o unificar nombres
Opción 1: Usar
mapProductResponsetambién engetProductsSearchServicepara consistencia total (requiere agregar los campos faltantes al select).Opción 2: Crear un mapper simplificado para la búsqueda que unifique los nombres:
// En getProductsSearchService, después de obtener products: const mappedProducts = products.map(p => ({ id: p.id_product, name: p.name, description: p.description, price: Number(p.price), commerce: p.store ? { id: p.store.id_store, name: p.store.name } : null }));🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/modules/commerce/products/product.service.js` around lines 212 - 220, La respuesta del endpoint de búsqueda es inconsistente con la de detalle: mapProductResponse usa la propiedad commerce { id, name } mientras getProductsSearchService devuelve store { id_store, name }, rompiendo el contrato de API; en getProductsSearchService (o en la función mapProductResponse) normaliza el mapeo del store a commerce renombrando id_store a id y envolviendo en commerce: { id, name } para cada producto (p.store → commerce), o alternativamente aplica mapProductResponse a los resultados de la búsqueda asegurando que los campos faltantes estén incluidos en el select; referencia: getProductsSearchService, mapProductResponse, product.store, commerce, id_store.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@src/modules/commerce/products/product.service.js`:
- Around line 212-220: La respuesta del endpoint de búsqueda es inconsistente
con la de detalle: mapProductResponse usa la propiedad commerce { id, name }
mientras getProductsSearchService devuelve store { id_store, name }, rompiendo
el contrato de API; en getProductsSearchService (o en la función
mapProductResponse) normaliza el mapeo del store a commerce renombrando id_store
a id y envolviendo en commerce: { id, name } para cada producto (p.store →
commerce), o alternativamente aplica mapProductResponse a los resultados de la
búsqueda asegurando que los campos faltantes estén incluidos en el select;
referencia: getProductsSearchService, mapProductResponse, product.store,
commerce, id_store.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8f3272d3-1927-48ae-896c-d052b5103b5a
📒 Files selected for processing (1)
src/modules/commerce/products/product.service.js
Summary by CodeRabbit
Notas de Lanzamiento