Skip to content

Revert "Om 55: Merging with Cris Code rabbit" - #18

Merged
Andoumeda merged 1 commit into
mainfrom
revert-15-OM-55
Mar 11, 2026
Merged

Andoumeda merged 1 commit into
mainfrom
revert-15-OM-55

Conversation

@CrisNAC

@CrisNAC CrisNAC commented Mar 10, 2026 •

Copy link
Copy Markdown
Owner

Reverts #15

Summary by CodeRabbit

Notas de la versión

  • Refactor

    • Se reestructuraron los parámetros de las rutas de tienda para mejorar la consistencia en la API.
    • Se habilitó la validación de rol de vendedor en la creación de tiendas.
  • Revert

    • Se removió completamente la funcionalidad de direcciones de usuario. Los endpoints relacionados ya no están disponibles.

@coderabbitai

coderabbitai Bot commented Mar 10, 2026 •

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Se 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 id a id_store y se activó la validación del rol SELLER en la creación de tiendas.

Changes

Cohort / Archivo(s) Resumen
Eliminación de módulo de direcciones
src/index.js, src/modules/users/addresses/routes/addresses.routes.js, src/modules/users/addresses/controllers/addresses.controller.js, src/modules/users/addresses/services/addresses.service.js
Se removió completamente el módulo de gestión de direcciones, incluyendo su registro en la aplicación principal, todas las rutas API (/api/addresses) y sus 5 funciones de servicio (crear, obtener por usuario, obtener por ID, actualizar, eliminar).
Renombramiento de parámetros en tienda
src/modules/commerce/commerces/store.routes.js, src/modules/commerce/commerces/store.controller.js, src/modules/commerce/commerces/store.service.js
Se cambió el parámetro de ruta de :id a :id_store en todas las rutas y sus correspondientes controladores y servicios. Se actualizaron las invocaciones de servicios (getStoreByIdService, getAllProductsByStoreService, filterStorePriductsService) para usar el nuevo nombre de parámetro.
Cambios en lógica de creación de tienda
src/modules/commerce/commerces/store.service.js
Se activó la validación del rol SELLER previamente comentada en createStoreService. Se eliminó la asignación automática del rol SELLER al usuario tras crear una tienda. Se ajustó el mapeo de clave foránea para direcciones de fk_store: store.id a store.id_store.

Estimated code review effort

🎯 3 (Moderado) | ⏱️ ~20 minutos

Possibly related PRs

Suggested reviewers

  • SebaKisser
  • J-Kanami-PS

Poem

🐰 ¡Hop, hop, cambios felices!
Las direcciones se van sin llorar,
Las tiendas ahora con id_store brillan,
SELLER valida sin vacilar,
El código más limpio, a festejar! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed El título describe claramente la acción principal del PR: revertir un merge anterior identificado como 'Om 55: Merging with Cris Code rabbit'. Los cambios confirman esta intención (eliminar módulo de direcciones, cambios en parámetros de rutas).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch revert-15-OM-55

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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: Middleware authenticate importado 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

📥 Commits

Reviewing files that changed from the base of the PR and between dcb28e2 and ba85800.

📒 Files selected for processing (10)
  • src/config/.gitkeep
  • src/index.js
  • src/modules/commerce/commerces/.gitkeep
  • src/modules/commerce/commerces/store.controller.js
  • src/modules/commerce/commerces/store.routes.js
  • src/modules/commerce/commerces/store.service.js
  • src/modules/users/addresses/.gitkeep
  • src/modules/users/addresses/controllers/addresses.controller.js
  • src/modules/users/addresses/routes/addresses.routes.js
  • src/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

Comment on lines 74 to +78
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 });

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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.

Suggested change
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.

Comment on lines +89 to +92
// vrificar que sea SELLER
if (usuario.role !== "SELLER") {
throw { status: 403, message: "El usuario no es vendedor" };
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 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 3

Repository: 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 50

Repository: 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)" -i

Repository: CrisNAC/BackendMarketplace

Length of output: 52


🏁 Script executed:

# Buscar endpoints de usuarios que podrían actualizar roles
rg -n "role" src/modules --type js -l

Repository: 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 -20

Repository: CrisNAC/BackendMarketplace

Length of output: 124


🏁 Script executed:

# Ver el servicio de usuarios completo
cat -n src/modules/users/users/services/users.services.js

Repository: CrisNAC/BackendMarketplace

Length of output: 1549


🏁 Script executed:

# Ver el controlador de sesión
cat -n src/modules/session/controllers/session.controllers.js

Repository: 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 2

Repository: CrisNAC/BackendMarketplace

Length of output: 872


🏁 Script executed:

# Buscar archivos de rutas
find src -name "*route*" -o -name "*routes*" | head -20

Repository: 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 -i

Repository: 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.js

Repository: CrisNAC/BackendMarketplace

Length of output: 353


🏁 Script executed:

# Ver los controladores de usuarios
cat -n src/modules/users/users/controllers/users.controllers.js

Repository: 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 2

Repository: 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 Andoumeda left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

se revertió a una versión funcional

@Andoumeda
Andoumeda merged commit 4c3300d into main Mar 11, 2026
1 check passed
This was referenced Mar 11, 2026
@Andoumeda
Andoumeda deleted the revert-15-OM-55 branch March 26, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants