Configuración de medios de la API
Overview
services/api/src/config/media.js concentra los límites operativos para medios asociados a listings. El módulo expone un único objeto, MEDIA_CONFIG, con topes para imágenes y documentos, tanto en unidades humanas como en bytes.
Este archivo no lee variables de entorno directamente. Depende de services/api/src/config/env.js, que ya normaliza los valores de ImageKit y sus límites asociados.
[!NOTE] Los límites en megabytes se convierten a bytes dentro del propio módulo. Así, el resto del backend puede validar tamaños sin repetir la conversión.
How it works
El archivo sigue un flujo muy corto y determinista:
- Importa
envdesde./env.js. - Construye
MEDIA_CONFIGcon valores ya resueltos. - Exporta ese objeto para consumo de otros módulos.
No hay lógica condicional, clases ni efectos secundarios adicionales. La responsabilidad del archivo es normalizar límites de medios en una sola estructura.
[!IMPORTANT] Los valores fuente viven en
services/api/src/config/env.js. Allí aparecenimagekitMaxImagesPerListing,imagekitMaxImageSizeMB,imagekitMaxDocumentsPerListingyimagekitMaxDocumentSizeMB, con sus valores por defecto del entorno. fileciteturn0file12turn0file13
Key components
MEDIA_CONFIG [badge:public]
MEDIA_CONFIG es el objeto exportado por el módulo. Agrupa los límites de carga y almacenamiento para medios del backend.
export const MEDIA_CONFIG = {
maxImagesPerListing: env.imagekitMaxImagesPerListing,
maxImageSizeMB: env.imagekitMaxImageSizeMB,
maxImageSizeBytes: env.imagekitMaxImageSizeMB * 1024 * 1024,
maxDocumentsPerListing: env.imagekitMaxDocumentsPerListing,
maxDocumentSizeMB: env.imagekitMaxDocumentSizeMB,
maxDocumentSizeBytes: env.imagekitMaxDocumentSizeMB * 1024 * 1024,
};
Dependencia de configuración
MEDIA_CONFIG toma sus valores desde env, no desde process.env. Eso mantiene la configuración centralizada en services/api/src/config/env.js.
Data & fields
[
{
"name": "maxImagesPerListing",
"type": "number",
"required": true,
"description": "Cantidad máxima de imágenes permitidas por listing. Proviene de env.imagekitMaxImagesPerListing."
},
{
"name": "maxImageSizeMB",
"type": "number",
"required": true,
"description": "Tamaño máximo de cada imagen en megabytes. Proviene de env.imagekitMaxImageSizeMB."
},
{
"name": "maxImageSizeBytes",
"type": "number",
"required": true,
"description": "Tamaño máximo equivalente en bytes para cada imagen. Se calcula desde maxImageSizeMB."
},
{
"name": "maxDocumentsPerListing",
"type": "number",
"required": true,
"description": "Cantidad máxima de documentos permitidos por listing. Proviene de env.imagekitMaxDocumentsPerListing."
},
{
"name": "maxDocumentSizeMB",
"type": "number",
"required": true,
"description": "Tamaño máximo de cada documento en megabytes. Proviene de env.imagekitMaxDocumentSizeMB."
},
{
"name": "maxDocumentSizeBytes",
"type": "number",
"required": true,
"description": "Tamaño máximo equivalente en bytes para cada documento. Se calcula desde maxDocumentSizeMB."
}
]
services/api/src/config/env.js define la configuración de ImageKit que alimenta este módulo. En el contexto provisto, esos campos incluyen:
imagekitMaxImagesPerListingimagekitMaxImageSizeMBimagekitMaxDocumentsPerListingimagekitMaxDocumentSizeMB
También se observan valores por defecto para esos límites en la configuración de entorno. fileciteturn0file12turn0file13
Behaviors
MEDIA_CONFIG— expone límites máximos de imagen y documento por listing.MEDIA_CONFIG— mantiene el tamaño en MB y en bytes para cada tipo de medio.MEDIA_CONFIG— deriva los valores de un único origen de configuración,env.MEDIA_CONFIG— evita duplicar conversiones de tamaño en otros módulos.
La conversión usa la multiplicación:
sizeMB * 1024 * 1024
Ese cálculo aparece para imágenes y documentos. El archivo guarda ambos formatos, porque distintos puntos del backend pueden necesitar una unidad u otra.
Gotchas & edge cases
[!WARNING]
maxImageSizeBytesymaxDocumentSizeBytesno son valores independientes. Siempre reflejan el valor en MB multiplicado por1024 * 1024.
[!NOTE] Si cambia
services/api/src/config/env.js, cambian también los límites expuestos por este módulo. No existe una configuración local separada paramedia.js. fileciteturn0file12turn0file13
Related
services/api/src/config/env.js— provee los valoresimagekitMaxImagesPerListing,imagekitMaxImageSizeMB,imagekitMaxDocumentsPerListingyimagekitMaxDocumentSizeMB.services/api/src/config/imagekit.js— comparte el mismo dominio de configuración de ImageKit dentro de la API.
[!IMPORTANT] Este archivo no define validación, subida ni persistencia. Solo expone límites normalizados para que otros módulos los consuman.