API-CINE 2022: El proyecto surge ante la necesidad del diseΓ±o Back-End de una APIREST en NESTJS para la gestiΓ³n de un servicio de streaming de pelΓculas. Se implementa la gestiΓ³n de un servicio de streaming a travΓ©s de una API REST en NESTJS y Postman para la construcciΓ³n, prueba e iteraciΓ³n de la API sobre una base de datos PostgreSQL, almacenada en un contenedor docker.
Tabla de Contenidos
-
Para iniciar la instalaciΓ³n:
$ npm i -g @nestjs/cli
-
Para la creaciΓ³n del proyecto:
$ nest new api
-
Para instalar las librerΓas:
- Copiamos las dependencias en nuestro archivo "package.json":
"dependencies": { "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.2.0", "@nestjs/core": "^9.0.0", "@nestjs/mapped-types": "^1.2.0", "@nestjs/platform-express": "^9.0.0", "@nestjs/typeorm": "^9.0.1", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", "pg": "^8.8.0", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.2.0", "typeorm": "^0.3.10" }
- Y, lanzamos:
$ npm install
- Copiamos las dependencias en nuestro archivo "package.json":
-
Para acceder e iniciar el proyecto:
$ cd api $ yarn start:dev
-
Un archivo DockerCompose, que define y es la orquestaciΓ³n de nuestro contenedor Docker:
version: '3.1' services: psql-db: image: postgres:12.1-alpine ports: - ${POSTGRES_PORT_EXTERNAL}:5432 environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASS} - POSTGRES_DB=${DB_NAME} volumes: - psql-db-data:/var/lib/postgresql/data networks: - ws-network volumes: psql-db-data: networks: ws-network:
-
App.module, donde vamos a definir la conexiΓ³n a nuestra base de datos PostgreSQL del contenedor docker meidante la llamada de variables definidas en un archivo .env:
@Module({ imports: [ConfigModule.forRoot(), TypeOrmModule.forRoot({ type: 'postgres', host: process.env.DB_HOST, port: parseInt(process.env.DB_PORT), username: process.env.DB_USER, password: process.env.DB_PASS, database: process.env.DB_NAME, autoLoadEntities: true, synchronize: !!process.env.DB_SYNC }), UsuariosModule, PeliculasModule, ValoracionesModule, GenerosModule, CestaModule, AuthModule, SeedModule ], controllers: [AppController], providers: [AppService], })
βββ api
β βββ .env
β βββ .eslintrc.js
β βββ .gitignore
β βββ .prettierrc
β βββ docker-compose.yml
β βββ nest-cli.json
β βββ package.json
β βββ README.md
β βββ src
β β βββ app.controller.spec.ts
β β βββ app.controller.ts
β β βββ app.module.ts
β β βββ app.service.ts
β β βββ main.ts
β β βββ modulos
β β βββ auth
β β β βββ auth.controller.ts
β β β βββ auth.module.ts
β β β βββ auth.service.ts
β β β βββ dto
β β β β βββ create-user.dto.ts
β β β β βββ update-auth.dto.ts
β β β βββ entities
β β β βββ user.entity.ts
β β βββ cesta
β β β βββ cesta.controller.ts
β β β βββ cesta.module.ts
β β β βββ cesta.service.ts
β β β βββ dto
β β β β βββ create-cesta.dto.ts
β β β β βββ update-cesta.dto.ts
β β β βββ entities
β β β βββ cesta.entity.ts
β β βββ generos
β β β βββ dto
β β β β βββ create-genero.dto.ts
β β β β βββ update-genero.dto.ts
β β β βββ entities
β β β β βββ genero.entity.ts
β β β βββ generos.controller.ts
β β β βββ generos.module.ts
β β β βββ generos.service.ts
β β βββ peliculas
β β β βββ dto
β β β β βββ create-pelicula.dto.ts
β β β β βββ update-pelicula.dto.ts
β β β βββ entities
β β β β βββ pelicula.entity.ts
β β β βββ peliculas.controller.ts
β β β βββ peliculas.module.ts
β β β βββ peliculas.service.ts
β β βββ seed
β β β βββ data
β β β β βββ cesta.json
β β β β βββ generos.json
β β β β βββ peliculas.json
β β β β βββ users.json
β β β β βββ usuarios.json
β β β β βββ valoraciones.json
β β β βββ seed.controller.ts
β β β βββ seed.module.ts
β β β βββ seed.service.ts
β β βββ usuarios
β β β βββ dto
β β β β βββ create-usuario.dto.ts
β β β β βββ update-usuario.dto.ts
β β β βββ entities
β β β β βββ usuario.entity.ts
β β β βββ usuarios.controller.ts
β β β βββ usuarios.module.ts
β β β βββ usuarios.service.ts
β β βββ valoraciones
β β βββ dto
β β β βββ create-valoracion.dto.ts
β β β βββ update-valoracion.dto.ts
β β βββ entities
β β β βββ valoracion.entity.ts
β β βββ valoraciones.controller.ts
β β βββ valoraciones.module.ts
β β βββ valoraciones.service.ts
β βββ test
β β βββ app.e2e-spec.ts
β β βββ jest-e2e.json
β βββ tsconfig.build.json
β βββ tsconfig.json
β βββ yarn.lock
βββ README.md