Este proyecto presenta una API RESTful , permitiendo a los usuarios con el rol de admin poder importar masivamente usuarios mediante la subida de archivos .csv . La API maneja JWT para la autenticación del usuario.
Es necesario tener Node.js, npm, y PostgreSQL instalados en tu entorno de desarrollo.
- Clona este repositorio:
git clone https://github.com/kevinsoras/backend-api-scvd
cd backend-api-scvd- Instala las dependencias:
npm install- Configura la conexión a la base de datos en el archivo .env, se muestra un ejemplo en el archivo .env.example .
- Ejecuta un reset de las migraciones con umzug:
npm run db:create
npm run db:migrate up- Inicia el servidor:
npm run devAsegúrate de proporcionar valores específicos para cada variable según los requisitos de tu aplicación.
La aplicación sigue una arquitectura de tres capas:
- Routers: Define las rutas y maneja las solicitudes HTTP.
- Servicios: Contiene la lógica de negocio y se comunica con la capa de acceso a datos.
- Acceso a Datos: Gestiona las interacciones con la base de datos PostgreSQL utilizando pg.
- Descripción: Permite a un usuario existente iniciar sesión.
- Body:
email,password- Credenciales requeridas para el inicio de sesión. - Respuesta: Inicia sesión y devuelve un token JWT.
- Descripción: Permite subir un archivo .csv ,se tiene un ejemplo en la raiz del proyecto dentro de /examples.
- Respuesta: Devuelve la información de los usuarios creados correctamente y los usuarios que no se pudieron insertar con sus respectivos detalles.
- Descripción: Permite a un usuario existente iniciar sesión.
- Body:
email,password: Credenciales requeridas para el inicio de sesión.
- Respuesta:
200 OK: Sesión iniciada, retorna token JWT.401 Unauthorized: Credenciales incorrectas.400 Bad Request: Error de datos de entrada.- Ejemplo de Respuesta:
{ "ok": true, "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5..." } }
- Descripción: Permite subir un archivo .csv ,se tiene un ejemplo en la raiz del proyecto dentro de /examples.
- Multipart Form:
file: Archivo .csv .
- Respuesta:
200 OK: Usuarios registrados correctamente.401 Unauthorized: Credenciales incorrectas.400 Bad Request: No se ha adjuntado ningun archivo ,csv.- Ejemplo de Respuesta:
{ "ok": true, "data": { "success": [ { "id": 2, "name": "kevin", "email": "kevinsoras@gmail.com", "age": 12 } ], "errors": [ { "row": 3, "details": { "insertion": "Hay un valor unico que se esta duplicando." } }, { "row": 4, "details": { "email": "El formato del campo 'email' es inválido.", "age": "El campo 'age' debe ser un numero." } } ] } }
Si deseas contribuir al desarrollo de esta API, simplemente realiza un Pull Request con tus cambios y para que sean revisados.
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para obtener más detalles.