Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agrega codigo necesario por mongoDB setup y spawn en Windows #1353

Merged
merged 55 commits into from
May 17, 2023
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
6e28b43
trabajo necesario por mongoDB setup y spawn en Windows
unjust Apr 3, 2023
8c8ca07
Merge branch 'Laboratoria:main' into bq_api_mongodb_e2e_1293
unjust Apr 12, 2023
cc5b37b
cambios a README
unjust Apr 20, 2023
3eeac05
ideas para adiciones GETTING_STARTED
unjust Apr 20, 2023
772d3da
comentando config y e2e tests mejor
unjust Apr 20, 2023
6b1b691
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust Apr 20, 2023
1458f91
Merge branch 'main' of github.com:Laboratoria/bootcamp into bq_api_mo…
unjust Apr 20, 2023
801a18c
mdlint fixes
unjust Apr 20, 2023
1eeef56
separating docker and mongo guides
unjust Apr 21, 2023
683640e
remove mongo deps from package.json
unjust Apr 21, 2023
f354113
clean mongoDB references de proyecto
unjust Apr 21, 2023
c63ac2c
patch for Mongo
unjust Apr 21, 2023
9da33ec
Update projects/04-burger-queen-api/README.md
Apr 21, 2023
945b216
cambios al readme y guia
unjust Apr 21, 2023
12e048a
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust Apr 21, 2023
abe4552
mdlint fixes
unjust Apr 21, 2023
c728593
readd jsonwebtoken dep
unjust Apr 21, 2023
98c0bcb
remove ws from patch
unjust Apr 21, 2023
c6b01ab
patch in the wrong place
unjust Apr 21, 2023
065010d
patch mongoDB created from project not from bootcamp
unjust Apr 21, 2023
8136213
actualizar table of contents
unjust Apr 21, 2023
f8aa6d3
Merge branch 'main' into bq_api_mongodb_e2e_1293
May 2, 2023
dc6a2a8
update guia and remove mongoose refs
unjust May 5, 2023
d55f2d3
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust May 5, 2023
54dd2f4
minor corrections
unjust May 5, 2023
13ee973
rehacer el patch
unjust May 5, 2023
0d44482
corrections
unjust May 5, 2023
c9b0fd1
remove redundant checklist, node driver resource
unjust May 8, 2023
cd0bde9
Update TODO projects/04-burger-queen-api/controller/users.js
May 8, 2023
0832013
mas detalle en TODO comentarios
unjust May 8, 2023
c3308fa
quitar mysql postgres de readme inicial, hacker edition docker
unjust May 8, 2023
7fa2193
apply and remove patch for e2e tests
unjust May 8, 2023
59943a4
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust May 8, 2023
bf4c67c
linter and section for hacker edition
unjust May 8, 2023
fce3433
Apply grammar and spelling suggestions from code review
May 9, 2023
e9fd40b
remove MySQL and add code link for snippet
unjust May 9, 2023
1b9d260
mas correciones de spelling, con uso de extension
unjust May 9, 2023
b3e99e3
Update auth.js
May 9, 2023
692b210
Apply suggestions from code review
May 10, 2023
c2512d8
update pt README
unjust May 10, 2023
07487b4
translations in pt, editions of docker readme
unjust May 10, 2023
63c38bf
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust May 10, 2023
3c6997b
Merge branch 'main' into bq_api_mongodb_e2e_1293
May 10, 2023
298d952
borra parte 1 de docker, es redundante
unjust May 10, 2023
8f7116c
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust May 10, 2023
44a0c78
mdlint fixes
unjust May 11, 2023
6ede552
cambios de connect y TODOs
unjust May 16, 2023
2e9010e
agregamos status de resp en globalSetup errors
unjust May 16, 2023
2795911
Update projects/04-burger-queen-api/guides/GETTING-STARTED-MONGODB.md
May 16, 2023
002d441
Apply suggestions from code review
May 16, 2023
cdf2202
espanol no pt, error response
unjust May 16, 2023
4266076
Merge branch 'bq_api_mongodb_e2e_1293' of github.com:unjust/bootcamp …
unjust May 16, 2023
ecff913
Merge branch 'main' into bq_api_mongodb_e2e_1293
May 17, 2023
a6a78da
Update README.md guides url
unjust May 17, 2023
e5cb2f8
Update README.pt.md url guides y texto duplicado
unjust May 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions projects/04-burger-queen-api/GETTING-STARTED.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Para ello te recomendamos seguir los pasos a continuación:
* [3. Configurar "servicio" de base de datos](#3-configurar-servicio-de-base-de-datos)
* [4. Configurar conexión a BBDD en "servicio" node](#4-configurar-conexión-a-bbdd-en-servicio-node)
* [5. Elegir módulo (cliente)](#5-elegir-módulo-cliente)
* [6. Iniciar, re-iniciar y parar los servicios con `docker-compose`](#6-iniciar-re-iniciar-y-parar-los-servicios-con-docker-compose)
* [6. Iniciar, re-iniciar y parar los servicios](#6-iniciar-re-iniciar-y-parar-los-servicios)
* [7. Familiarizarte con admisitración de contenedores](#7-familiarizarte-con-admisitración-de-contenedores)
* [8. Opcionalmente, instalar interfaz gráfica para admisitrar data](#8-opcionalmente-instalar-interfaz-gráfica-para-admisitrar-data)
* [9. Definir esquemas](#9-definir-esquemas)
Expand All @@ -23,12 +23,14 @@ Para ello te recomendamos seguir los pasos a continuación:
La primera decisión que tenemos que tomar, antes de comenzar a programar, es
elegir una base de datos. En este proyecto se sugieren 3 opciones: dos de ellas
_relacionales_ y basadas en SQL, (PostgreSQL y MySQL), y otra _no relacional_
(MongoDB). Las 3 son excelentes opciones.
(MongoDB). Las 3 son excelentes opciones. Estamos entregando el proyecto como
has elegido MongoDB, pero puedes editar el boilerplate pare trabajar con
otro base de datos.

Algunos puntos a tener en cuenta:

* MongoDB es la más _común_ (popular) a día de hoy en el ecosistema de
Node.js.
Node.js. Por eso estamos entregando el proyecto como fuera elegido.
* Las bases de datos _relacionales_ normalmente requieren más diseño
_a priori_ (definir tablas, columnas, relaciones, ...) mientras que las
_no relacionales_ nos permiten ser más _flexibles_.
Expand All @@ -47,6 +49,8 @@ Algunos puntos a tener en cuenta:

## 2. Instalar `docker` y `docker-compose`

Note: Si tienes sistema Windows y complica usar docker, salta partes 2, 3, y 4.

Independientemente de qué base datos elijas, en este proyecto vamos a ejecutar
localmente (en nuestra computadora) el servidor de bases de datos usando
_contenedores_ de Docker en vez de instalar el programa directamente en nuestra
Expand Down Expand Up @@ -240,7 +244,15 @@ connection.query("SELECT 1 + 1 AS solution", (error, results) => {
connection.end();
```

## 6. Iniciar, re-iniciar y parar los servicios con `docker-compose`
## 6. Iniciar, re-iniciar y parar los servicios

Nota: Si no estas usando `docker` vas a levantar el servidor y instancia de
base de datos desde la linea comando o interfaz que has instalado con el base
de datos.

TODO: ejemplos de levantar ?

### con `docker-compose`

Ahora que ya tenemos nuestra configuración de `docker-compose` lista, veamos
cómo podemos _levantar_ la aplicación. Para eso usamos el comando
Expand Down Expand Up @@ -493,3 +505,8 @@ remotas. Por ejemplo:
```sh
REMOTE_URL=https://api.my-super-app.com npm run test:e2e
```

### e2e con MongoDB

TODO: habla de @shelf/jest-mongodb + mongodb-memory-server
y las configuraciones
28 changes: 17 additions & 11 deletions projects/04-burger-queen-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,10 @@ _endpoints_ (puntos de conexión o URLs) y nos piden completar la aplicación.
Esto implica que tendremos que partir por leer la implementación existente, y
familiarizarnos con el _stack_ elegido ([Node.js](https://nodejs.org/) y
[Express](https://expressjs.com/)) y complementarlo con un motor de bases de
datos, el cual tu deberás elegir entre [MongoDB](https://www.mongodb.com/),
[PostgreSQL](https://www.postgresql.org/) y [MySQL](https://www.mysql.com/).
datos. El boilerplate viene con logica para usar con [MongoDB](https://www.mongodb.com/).
Pero puedes tambien elegir entre [PostgreSQL](https://www.postgresql.org/)
y [MySQL](https://www.mysql.com/), sacando o comentando los partes
que apoyan MongoDB.
unjust marked this conversation as resolved.
Show resolved Hide resolved

La clienta nos ha dado un [link a la documentación](https://app.swaggerhub.com/apis-docs/ssinuco/BurgerQueenAPI/2.0.0)
que especifica el comportamiento esperado de la API que expondremos por
Expand Down Expand Up @@ -205,19 +207,23 @@ Nuestra aplicación usa las siguientes variables de entorno:
### 5.3 Despliegue (Deployment)

Nuestra clienta nos ha manifestado que su equipo de _devops_ está siempre con
muchas tareas, por por lo que nos pide como requerimiento que la aplicación esté
muchas tareas, por lo que nos pide como requerimiento que la aplicación esté
configurada con `docker-compose` para que pueda ser desplegada sin dificultades
en cualquier entorno.

El _boilerplate_ ya cuenta con una configuración incial de `docker-compose` para
la aplicación de node, tu tarea será extender esa configuración para incluir la
configuración de base de datos que hayas elegido. Ten en cuenta que como vas a
tener dos servidores corriendo sobre una misma configuración, deberás exponer
los servicios en diferentes puertos.

Para este proyecto te recomendamos usar `docker-compose` localmente (en tu
computadora) para ejecutar la aplicación junto con la base de datos
seleccionada. Por otro lado, con respecto al despliegue, no es obligatorio usar
la aplicación de node, tu tarea será extender esa configuración para incluir
la configuración de base de datos que hayas elegido (como MongoDB).
Ten en cuenta que como vas a tener dos servidores corriendo sobre una misma
configuración, deberás exponer los servicios en diferentes puertos.
Copy link
Collaborator

Choose a reason for hiding this comment

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

esta configuración tb estaría bueno dárselas funcionando, no?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Igual deberiamos preguntarnos para que queremos docker-compose?
Originalmente el deployment de este proyecto se hacia en un VPS q les proveeiamos a las estudiantes para q ellas se conectaran a esos servidores a través de ssh, instalaran las dependencias y levantaran su API con docker-compose.

Teniendo en cuenta la recomendación de arriba de usar docker compose de manera local, docker-compose solo tendria sentido si en lugar de levantar toda la aplicación se recomendara solo para el entorno dev y solo para levantar la db localmente

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Algo para hablar con mas. Entendi que queremos que ellas hagan con docker-compose por el local y despliegue - yo creo es mejor practica, mas devops, y ayuda desplegar mas facil.
Solo que docker local no es tan facil en Windows, y por eso ofrecemos el camino a no hacerlo local con docker.


No es obligatorio, pero para este proyecto te recomendamos usar `docker-compose`
localmente (en tu computadora) para ejecutar la aplicación junto con la base de datos
seleccionada. Si complica usar `docker` con tu sistema (estamos pensando
en Windows) para desarrollo local, puedes dejar `docker`
unjust marked this conversation as resolved.
Show resolved Hide resolved
y levantar (correr) el base de datos y express server localmente.

Por otro lado, con respecto al despliegue, tampoco es obligatorio usar
unjust marked this conversation as resolved.
Show resolved Hide resolved
`docker-compose`, puedes elegir el proveedor (o proveedores) que prefieras junto
con el mecanismo de despligue y estrategia de alojamiento. Te recomendamos
explorar las siguientes opciones:
Expand Down
2 changes: 2 additions & 0 deletions projects/04-burger-queen-api/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ exports.dbUrl = process.env.DB_URL || 'mongodb://localhost:27017/test';
exports.secret = process.env.JWT_SECRET || 'esta-es-la-api-burger-queen';
exports.adminEmail = process.env.ADMIN_EMAIL || 'admin@localhost';
exports.adminPassword = process.env.ADMIN_PASSWORD || 'changeme';
// la siguiente env vars son configurando con valores de MongoDB
exports.dbUrl = process.env.MONGO_URL || process.env.DB_URL || 'mongodb://localhost:27017/test';
31 changes: 27 additions & 4 deletions projects/04-burger-queen-api/e2e/globalSetup.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@ const path = require('path');
const { spawn } = require('child_process');
const kill = require('tree-kill');

/* Para usar con MongoDB + @shelf/jest-mongodb, borrar si no estas usando */
const globalSetup = require("@shelf/jest-mongodb/lib/setup");
const MongodbMemoryServer = require('mongodb-memory-server').default;

global.__MONGOD__ = MongodbMemoryServer;
/* end */

const config = require('../config');

const port = process.env.PORT || 8888;
Expand Down Expand Up @@ -105,10 +112,26 @@ module.exports = () => new Promise((resolve, reject) => {
return resolve();
}

// TODO: Configurar DB de tests

console.info('Staring local server...');
const child = spawn('npm', ['start', process.env.PORT || 8888], {
/* config de MongoDB */
globalSetup({rootDir: __dirname}).then(() => {
// console.log(global.__MONGOD__);
console.info('Starting local server...');
const child = spawn("node", [ "index.js", process.env.PORT || 8888],
{
cwd: path.resolve(__dirname, "../"),
stdio: ["ignore", "pipe", "pipe"],
env: { PATH: process.env.PATH, MONGO_URL: process.env.MONGO_URL }
}
);
})
.catch((error) => console.log(error));
/* end */
// sino usas MongoDB, borra de arriba y hay que
// TODO: Configurar DB de tests

console.info('Starting local server...');

const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['start', process.env.PORT || 8888], {
cwd: path.resolve(__dirname, '../'),
stdio: ['ignore', 'pipe', 'pipe'],
});
Expand Down
15 changes: 15 additions & 0 deletions projects/04-burger-queen-api/jest-mongodb-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Para usar con MongoDB y jest-mongodb
// https://www.npmjs.com/package/@shelf/jest-mongodb

module.exports = {
mongodbMemoryServerOptions: {
instance: {
dbName: 'jest',
},
binary: {
version: '4.0.3',
skipMD5: true,
},
autoStart: false,
},
};
5 changes: 3 additions & 2 deletions projects/04-burger-queen-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
"bcrypt": "^5.0.1",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1"
},
"devDependencies": {
"docdash": "^1.2.0",
Expand All @@ -31,7 +30,9 @@
"jest": "^27.0.1",
"jsdoc": "^3.6.6",
"jsdoc-http-plugin": "^0.3.2",
"mongodb-memory-server": "^8.11.2",
"node-fetch": "^3.1.0",
"@shelf/jest-mongodb": "^4.1.5",
"tree-kill": "^1.2.2"
}
}
}