Este repositorio contiene el código fuente de la aplicación web desarrollada para el desafío en el que validaremos nuestros conocimientos sobre validaremos nuestros conocimientos de Conectar una base de datos PostgreSQL con Node, Realizar consultas DML con Node y el paquete pg. Realizar consultas TCL con Node y el paquete pg, Construir una API RESTful utilizando PostgreSQL para la persistencia de datos, Manejar errores y Manejar códigos de estado HTTP.
El Banco Solar acaba de decidir invertir una importante suma de dinero para contratar un equipo de desarrolladores Full Stack que desarrollen un nuevo sistema de transferencias, y han anunciado que todo aquel que postule al cargo debe realizar un servidor con Node que utilice PostgreSQL para la gestión y persistencia de datos, y simular un sistema de transferencias. El sistema debe permitir registrar nuevos usuarios con un balance inicial y basados en estos, realizar transferencias de saldos entre ellos.
Siguiendo esta gráfica:
- Utilizar el paquete pg para conectarse a PostgreSQL y realizar consultas DML para la gestión y persistencia de datos. (3 Puntos)
- Usar transacciones SQL para realizar el registro de las transferencias. (2 Puntos)
- Servir una API RESTful en el servidor con los datos de los usuarios almacenados en PostgreSQL. (3 Puntos)
- Capturar los posibles errores que puedan ocurrir a través de bloques catch o parámetros de funciones callbacks para condicionar las funciones del servidor. (1 Punto)
- Devolver correctamente los códigos de estado según las diferentes situaciones. (1 Punto)
Las rutas a disponibilizar son las siguientes:
- / GET: Devuelve la aplicación cliente disponible en el apoyo de la prueba.
- /usuario POST: Recibe los datos de un nuevo usuario y los almacena en PostgreSQL.
- /usuarios GET: Devuelve todos los usuarios registrados con sus balances.
- /usuario PUT: Recibe los datos modificados de un usuario registrado y los actualiza.
- /usuario DELETE: Recibe el id de un usuario registrado y lo elimina .
- /transferencia POST: Recibe los datos para realizar una nueva transferencia. Se debe ocupar una transacción SQL en la consulta a la base de datos.
- /transferencias GET: Devuelve todas las transferencias almacenadas en la base de datos en formato de arreglo.
El proyecto está estructurado de la siguiente manera:
En busca de seguir los lineamientoes de la arquitectura MVC
El proyecto utiliza las siguientes dependencias principales:
- Express: Para la creación del servidor web.
- Axios
- Bootstrap
- Pg
- Dotenv
Para ejecutar el proyecto localmente, asegúrate de tener instalado Node.js y npm. Luego, sigue estos pasos:
- Clona este repositorio:
git clone <URL_del_repositorio>
- Accede al directorio del proyecto:
cd <nombre_del_directorio>
- Instala las dependencias del proyecto:
npm install
- Inicia el servidor local:
npm run dev
- Abre tu navegador web y accede a
http://localhost:3000
para ver la aplicación en funcionamiento.
CREATE DATABASE bancosolar;
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(50),
balance FLOAT CHECK (balance >= 0)
);
CREATE TABLE transferencias (
id SERIAL PRIMARY KEY,
emisor INT,
receptor INT,
monto FLOAT,
fecha TIMESTAMP,
FOREIGN KEY (emisor) REFERENCES usuarios(id) ON DELETE CASCADE,
FOREIGN KEY (receptor) REFERENCES usuarios(id) ON DELETE CASCADE
);