Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/camiloivcode/biblioteca-la-palabra/llms.txt

Use this file to discover all available pages before exploring further.

El módulo de materiales gestiona el catálogo completo de la biblioteca. Desde aquí el personal puede registrar nuevos títulos, actualizar sus datos, consultar el stock disponible y controlar el estado de circulación de cada ejemplar. El sistema actualiza el stock y el estado del material de forma automática cada vez que se crea o devuelve un préstamo.

Tipos de material

El campo tipo clasifica el formato físico del ítem catalogado. Los valores aceptados son:
TipoDescripción
LIBROPublicación en volumen, con ISBN opcional
REVISTAPublicación periódica de formato revista
DVDMaterial audiovisual en disco
PERIODICODiario o publicación de actualidad
OTROCualquier otro formato no contemplado en los anteriores

Campos del material

CampoTipoRequeridoNotas
titulostringTítulo del material
isbnstringCódigo ISBN — debe ser único si se provee
tipoenumUno de: LIBRO, REVISTA, DVD, PERIODICO, OTRO
anioPublintegerAño de publicación (entre 1000 y el año actual)
editorialstringNombre de la editorial
descripcionstringDescripción o sinopsis del material
stockintegerCantidad de ejemplares disponibles; valor mínimo 1, predeterminado 1
estadoenumGestionado por el sistema; valores: DISPONIBLE, PRESTADO, EN_REPARACION, DADO_DE_BAJA
autorIdintegerID del autor asociado (referencia a la tabla de autores)
categoriaIdintegerID de la categoría asociada (referencia a la tabla de categorías)

Estados del material

EstadoCondiciónDescripción
DISPONIBLEstock > 0Hay al menos un ejemplar disponible para préstamo
PRESTADOTodos los ejemplares están en préstamos activosNo quedan ejemplares disponibles
EN_REPARACIONAsignado manualmente por el personalEl material está temporalmente fuera de circulación por mantenimiento
DADO_DE_BAJAAsignado manualmente por el personalEl material fue retirado definitivamente del catálogo

Control de stock automático

El sistema actualiza el estado del material de forma transparente como parte de las operaciones de préstamo y devolución, usando transacciones de base de datos para garantizar consistencia. Al crear un préstamo: el servicio verifica que el material tenga estado DISPONIBLE y que el número de préstamos simultáneos activos no supere el stock registrado. Si tras crear el préstamo todos los ejemplares quedan en circulación, el estado del material se actualiza a PRESTADO.
// prestamo.service.js — fragmento de create()
const prestamosConMaterial = await tx.prestamo.count({
  where: { materialId: parseInt(materialId), estado: { in: ['ACTIVO', 'MORA'] } },
});

if (prestamosConMaterial >= material.stock) {
  await tx.material.update({
    where: { id: parseInt(materialId) },
    data: { estado: 'PRESTADO' },
  });
}
Al registrar una devolución: el estado del material vuelve a DISPONIBLE automáticamente, independientemente de cuántos ejemplares hayan sido devueltos.
// prestamo.service.js — fragmento de devolver()
await tx.material.update({
  where: { id: prestamo.materialId },
  data: { estado: 'DISPONIBLE' },
});

Operaciones disponibles

MétodoEndpointDescripción
GET/api/materialesLista paginada del catálogo con soporte de filtros
GET/api/materiales/:idDetalle de un material, incluyendo autor, categoría y préstamos activos
POST/api/materialesRegistra un nuevo material en el catálogo
PUT/api/materiales/:idActualiza los datos de un material existente
DELETE/api/materiales/:idElimina un material (bloqueado si tiene préstamos activos)
El endpoint GET /api/materiales acepta los siguientes filtros como query parameters: tipo (valor exacto del enum), estado (valor exacto del enum), autorId (entero), categoriaId (entero) y search (búsqueda parcial sobre titulo, isbn y editorial). La paginación se controla con page (predeterminado 1) y limit (predeterminado 20).Ejemplo:
GET /api/materiales?tipo=LIBRO&estado=DISPONIBLE&categoriaId=3&page=1&limit=15
Authorization: Bearer <token>
Para la referencia completa del endpoint de materiales, consulta la documentación de /api/materiales.

Build docs developers (and LLMs) love