Repository navigation
Revert "Om 55: Merging with Cris Code rabbit" - #18
Conversation
📝 WalkthroughWalkthroughSe eliminó completamente el módulo de direcciones de usuarios (rutas, controladores y servicios) y se desmontó de la aplicación principal. Además, se renombraron parámetros de ruta en el módulo de comercios de Changes
Estimated code review effort🎯 3 (Moderado) | ⏱️ ~20 minutos Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
src/modules/commerce/commerces/store.service.js (1)
89-89: Typo en comentario.El comentario dice "vrificar" en lugar de "verificar".
✏️ Corrección
- // vrificar que sea SELLER + // verificar que sea SELLER🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/modules/commerce/commerces/store.service.js` at line 89, Reemplaza el comentario typo "// vrificar que sea SELLER" por la corrección "// verificar que sea SELLER" (localiza la cadena exacta "// vrificar que sea SELLER" en store.service.js) para corregir la ortografía; no cambies la intención del comentario ni el código circundante.src/modules/commerce/commerces/store.routes.js (1)
3-3: Middlewareauthenticateimportado pero no utilizado.Se importa el middleware de autenticación pero no se usa en ninguna ruta. Si la creación de tiendas debe requerir autenticación, considerá aplicarlo a la ruta POST.
♻️ Sugerencia para aplicar autenticación
-router.post("/", createStore); +router.post("/", authenticate, createStore);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/modules/commerce/commerces/store.routes.js` at line 3, La importación de middleware authenticate no se está usando; para arreglarlo, aplícalo como middleware en la ruta POST que crea tiendas (es decir, añadir authenticate como segundo argumento en el router.post(...) que maneja la creación de tiendas) para exigir autenticación, o elimina la importación si la ruta debe permanecer pública; referencia el símbolo authenticate y la ruta POST de creación de tiendas (router.post(...)) para localizar el cambio.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/modules/commerce/commerces/store.controller.js`:
- Around line 74-78: El controlador filterStoreProducts está pasando price_min y
price_max desde req.query al servicio filterStorePriductsService, pero ese
servicio espera las claves minPrice y maxPrice; actualiza la llamada a
filterStorePriductsService para transformar/renombrar { price_min, price_max } a
{ minPrice: price_min, maxPrice: price_max } (dejando category igual) para que
los filtros de precio funcionen correctamente; verifica también el uso del
identificador id_store al pasar el primer argumento.
In `@src/modules/commerce/commerces/store.service.js`:
- Around line 89-92: The code prevents creation of a store because new users
default to role "CUSTOMER" (users.services.js line 35) and there is no way to
change to "SELLER"; add a controlled role-assignment flow by implementing a
service method (e.g., updateUserRole or promoteToSeller in users.services.js)
and a new controller/route (e.g., POST /api/users/promote or
/api/users/assign-role) that updates the user's role from CUSTOMER to SELLER,
and ensure proper authorization checks (only admins or verified owner requests
allowed) and validation are enforced before calling the existing store creation
check in store.service.js (the usuario.role !== "SELLER" guard).
---
Nitpick comments:
In `@src/modules/commerce/commerces/store.routes.js`:
- Line 3: La importación de middleware authenticate no se está usando; para
arreglarlo, aplícalo como middleware en la ruta POST que crea tiendas (es decir,
añadir authenticate como segundo argumento en el router.post(...) que maneja la
creación de tiendas) para exigir autenticación, o elimina la importación si la
ruta debe permanecer pública; referencia el símbolo authenticate y la ruta POST
de creación de tiendas (router.post(...)) para localizar el cambio.
In `@src/modules/commerce/commerces/store.service.js`:
- Line 89: Reemplaza el comentario typo "// vrificar que sea SELLER" por la
corrección "// verificar que sea SELLER" (localiza la cadena exacta "// vrificar
que sea SELLER" en store.service.js) para corregir la ortografía; no cambies la
intención del comentario ni el código circundante.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: dc3546c3-9b83-4007-804c-a187673c5e8f
📒 Files selected for processing (10)
src/config/.gitkeepsrc/index.jssrc/modules/commerce/commerces/.gitkeepsrc/modules/commerce/commerces/store.controller.jssrc/modules/commerce/commerces/store.routes.jssrc/modules/commerce/commerces/store.service.jssrc/modules/users/addresses/.gitkeepsrc/modules/users/addresses/controllers/addresses.controller.jssrc/modules/users/addresses/routes/addresses.routes.jssrc/modules/users/addresses/services/addresses.service.js
💤 Files with no reviewable changes (4)
- src/modules/users/addresses/controllers/addresses.controller.js
- src/index.js
- src/modules/users/addresses/routes/addresses.routes.js
- src/modules/users/addresses/services/addresses.service.js
| export const filterStoreProducts = async (req, res) => { | ||
| try { | ||
| const { id } = req.params; | ||
| const { id_store } = req.params; | ||
| const { category, price_min, price_max } = req.query; | ||
| const products = await filterStorePriductsService(id, { category, price_min, price_max }); | ||
| const products = await filterStorePriductsService(id_store, { category, price_min, price_max }); |
There was a problem hiding this comment.
Discrepancia en nombres de parámetros de filtro.
El controlador extrae price_min y price_max del query string, pero el servicio filterStorePriductsService espera minPrice y maxPrice según los snippets relevantes (líneas 319 y 334-338 de store.service.js). Esto causará que los filtros de precio no funcionen.
🐛 Corrección propuesta
export const filterStoreProducts = async (req, res) => {
try {
const { id_store } = req.params;
- const { category, price_min, price_max } = req.query;
- const products = await filterStorePriductsService(id_store, { category, price_min, price_max });
+ const { category, price_min, price_max, name, visible, sortBy, sortOrder } = req.query;
+ const products = await filterStorePriductsService(id_store, {
+ category,
+ minPrice: price_min,
+ maxPrice: price_max,
+ name,
+ visible,
+ sortBy,
+ sortOrder
+ });
return res.status(200).json(products);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| export const filterStoreProducts = async (req, res) => { | |
| try { | |
| const { id } = req.params; | |
| const { id_store } = req.params; | |
| const { category, price_min, price_max } = req.query; | |
| const products = await filterStorePriductsService(id, { category, price_min, price_max }); | |
| const products = await filterStorePriductsService(id_store, { category, price_min, price_max }); | |
| export const filterStoreProducts = async (req, res) => { | |
| try { | |
| const { id_store } = req.params; | |
| const { category, price_min, price_max, name, visible, sortBy, sortOrder } = req.query; | |
| const products = await filterStorePriductsService(id_store, { | |
| category, | |
| minPrice: price_min, | |
| maxPrice: price_max, | |
| name, | |
| visible, | |
| sortBy, | |
| sortOrder | |
| }); | |
| return res.status(200).json(products); |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/modules/commerce/commerces/store.controller.js` around lines 74 - 78, El
controlador filterStoreProducts está pasando price_min y price_max desde
req.query al servicio filterStorePriductsService, pero ese servicio espera las
claves minPrice y maxPrice; actualiza la llamada a filterStorePriductsService
para transformar/renombrar { price_min, price_max } a { minPrice: price_min,
maxPrice: price_max } (dejando category igual) para que los filtros de precio
funcionen correctamente; verifica también el uso del identificador id_store al
pasar el primer argumento.
| // vrificar que sea SELLER | ||
| if (usuario.role !== "SELLER") { | ||
| throw { status: 403, message: "El usuario no es vendedor" }; | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Buscar si existe algún endpoint o servicio para actualizar el rol del usuario a SELLER
rg -n "SELLER" --type js -C 3Repository: CrisNAC/BackendMarketplace
Length of output: 1256
🏁 Script executed:
# Ver el contexto completo de la función que contiene la validación SELLER
head -n 110 src/modules/commerce/commerces/store.service.js | tail -n 50Repository: CrisNAC/BackendMarketplace
Length of output: 1430
🏁 Script executed:
# Buscar endpoints o servicios que asignen o actualicen el rol SELLER
rg -n "(role|SELLER)" --type js -i -C 2 | grep -E "(update|assign|change|set)" -iRepository: CrisNAC/BackendMarketplace
Length of output: 52
🏁 Script executed:
# Buscar endpoints de usuarios que podrían actualizar roles
rg -n "role" src/modules --type js -lRepository: CrisNAC/BackendMarketplace
Length of output: 272
🏁 Script executed:
# Buscar si hay algún servicio de autenticación o usuarios
fd -e js | xargs grep -l "user.*role" -i | head -20Repository: CrisNAC/BackendMarketplace
Length of output: 124
🏁 Script executed:
# Ver el servicio de usuarios completo
cat -n src/modules/users/users/services/users.services.jsRepository: CrisNAC/BackendMarketplace
Length of output: 1549
🏁 Script executed:
# Ver el controlador de sesión
cat -n src/modules/session/controllers/session.controllers.jsRepository: CrisNAC/BackendMarketplace
Length of output: 4673
🏁 Script executed:
# Buscar en toda la carpeta de usuarios si hay algún endpoint o función que actualice roles
rg -n "role" src/modules/users --type js -B 2 -A 2Repository: CrisNAC/BackendMarketplace
Length of output: 872
🏁 Script executed:
# Buscar archivos de rutas
find src -name "*route*" -o -name "*routes*" | head -20Repository: CrisNAC/BackendMarketplace
Length of output: 448
🏁 Script executed:
# Buscar controladores de usuarios
find src/modules/users -name "*controller*" -o -name "*controllers*"Repository: CrisNAC/BackendMarketplace
Length of output: 162
🏁 Script executed:
# Buscar cualquier función que actualice usuarios o roles
rg -n "update.*user|role.*update" --type js -iRepository: CrisNAC/BackendMarketplace
Length of output: 52
🏁 Script executed:
# Buscar en el schema de prisma si existe referencia al rol
find . -name "schema.prisma" -o -name "*.prisma"Repository: CrisNAC/BackendMarketplace
Length of output: 92
🏁 Script executed:
# Ver las rutas disponibles para usuarios
cat -n src/modules/users/users/routes/users.routes.jsRepository: CrisNAC/BackendMarketplace
Length of output: 353
🏁 Script executed:
# Ver los controladores de usuarios
cat -n src/modules/users/users/controllers/users.controllers.jsRepository: CrisNAC/BackendMarketplace
Length of output: 1613
🏁 Script executed:
# Ver la estructura de usuarios en el schema
grep -n "model.*[Uu]ser\|role\|SELLER\|CUSTOMER" prisma/schema.prisma -A 10 -B 2Repository: CrisNAC/BackendMarketplace
Length of output: 842
No existe mecanismo para asignar el rol SELLER a los usuarios.
La validación de rol SELLER en la función está correcta, pero presenta un problema crítico: los nuevos usuarios se crean con rol "CUSTOMER" por defecto (users.services.js línea 35), y el único endpoint disponible es /api/users/register que no permite actualizar el rol. No hay ningún endpoint ni servicio en el código que permita cambiar el rol de "CUSTOMER" a "SELLER".
Esto hace que los usuarios nunca puedan crear una tienda, a menos que se actualice manualmente la base de datos o se implemente un endpoint para asignar el rol SELLER (por ejemplo, desde un panel de administrador o mediante una solicitud de vendedor).
Se debe agregar un mecanismo para que los usuarios puedan obtener el rol SELLER, o aclarar si esta restricción es intencional y será gestionada mediante otro proceso fuera de la API.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/modules/commerce/commerces/store.service.js` around lines 89 - 92, The
code prevents creation of a store because new users default to role "CUSTOMER"
(users.services.js line 35) and there is no way to change to "SELLER"; add a
controlled role-assignment flow by implementing a service method (e.g.,
updateUserRole or promoteToSeller in users.services.js) and a new
controller/route (e.g., POST /api/users/promote or /api/users/assign-role) that
updates the user's role from CUSTOMER to SELLER, and ensure proper authorization
checks (only admins or verified owner requests allowed) and validation are
enforced before calling the existing store creation check in store.service.js
(the usuario.role !== "SELLER" guard).
Andoumeda
left a comment
There was a problem hiding this comment.
se revertió a una versión funcional
Reverts #15
Summary by CodeRabbit
Notas de la versión
Refactor
Revert