diff --git a/.env.example b/.env.example index ce26c2b..543bc3f 100644 --- a/.env.example +++ b/.env.example @@ -12,4 +12,15 @@ DB_NAME_DSC= NODEMAILER_SERVICE= NODEMAILER_USER= -NODEMAILER_PASWORD= \ No newline at end of file +NODEMAILER_PASWORD= + +#132.248.180.82 +#3306 +#usr_tl +#A1m_p@$ +#Betelgeuse_TL_test +HOST_TYL=132.248.180.82 +PORT_TYL=3306 +USUARIO_TYL=usr_tl +CONTRASENA_TYL=A1m_p@$ +DATABASE_TYL=Betelgeuse_TL_test diff --git a/package-lock.json b/package-lock.json index eb25f65..9ca6cb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "exceljs": "^4.3.0", "moment": "^2.29.4", "multer": "^1.4.5-lts.1", - "mysql2": "^3.1.2", + "mysql2": "^3.14.3", "nodemailer": "^6.9.1", "passport": "^0.6.0", "passport-jwt": "^4.0.1", @@ -3188,6 +3188,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/babel-jest": { "version": "29.4.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.2.tgz", @@ -7531,6 +7540,21 @@ "yallist": "^3.0.2" } }, + "node_modules/lru.min": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", + "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, "node_modules/macos-release": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", @@ -7813,15 +7837,17 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.1.2.tgz", - "integrity": "sha512-NXz6sUvHSEOKz1jv3koSga7eb2dHrwD/mnPmqbbZzMRvjQcSpb0Eh0ectWyYt1U60CLlEbjoA3XYjjbbReRF5Q==", + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.3.tgz", + "integrity": "sha512-fD6MLV8XJ1KiNFIF0bS7Msl8eZyhlTDCDl75ajU5SJtpdx9ZPEACulJcqJWr1Y8OYyxsFc4j3+nflpmhxCU5aQ==", + "license": "MIT", "dependencies": { + "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^7.14.1", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -7841,14 +7867,6 @@ "node": ">=0.10.0" } }, - "node_modules/mysql2/node_modules/lru-cache": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.1.tgz", - "integrity": "sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==", - "engines": { - "node": ">=12" - } - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -13713,6 +13731,11 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, + "aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==" + }, "babel-jest": { "version": "29.4.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.2.tgz", @@ -17034,6 +17057,11 @@ "yallist": "^3.0.2" } }, + "lru.min": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", + "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==" + }, "macos-release": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", @@ -17247,15 +17275,16 @@ "dev": true }, "mysql2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.1.2.tgz", - "integrity": "sha512-NXz6sUvHSEOKz1jv3koSga7eb2dHrwD/mnPmqbbZzMRvjQcSpb0Eh0ectWyYt1U60CLlEbjoA3XYjjbbReRF5Q==", + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.3.tgz", + "integrity": "sha512-fD6MLV8XJ1KiNFIF0bS7Msl8eZyhlTDCDl75ajU5SJtpdx9ZPEACulJcqJWr1Y8OYyxsFc4j3+nflpmhxCU5aQ==", "requires": { + "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^7.14.1", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -17268,11 +17297,6 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } - }, - "lru-cache": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.1.tgz", - "integrity": "sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==" } } }, diff --git a/package.json b/package.json index ceb6d77..1b656df 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "exceljs": "^4.3.0", "moment": "^2.29.4", "multer": "^1.4.5-lts.1", - "mysql2": "^3.1.2", + "mysql2": "^3.14.3", "nodemailer": "^6.9.1", "passport": "^0.6.0", "passport-jwt": "^4.0.1", diff --git a/src/almacenamiento/almacenamiento.controller.ts b/src/almacenamiento/almacenamiento.controller.ts index 528eb0a..fb8682a 100644 --- a/src/almacenamiento/almacenamiento.controller.ts +++ b/src/almacenamiento/almacenamiento.controller.ts @@ -6,12 +6,11 @@ export class AlmacenamientoController { constructor(private readonly almacenamientoService: AlmacenamientoService) {} @Post() - async create(@Body() body: { email: string; agree: boolean }) { - // Save only if agree is true + async create(@Body() body: { correo: string; agree: boolean }) { if (!body.agree) { return { message: 'User did not agree', data: body }; } - const saved = await this.almacenamientoService.create(body.email); + const saved = await this.almacenamientoService.create(body.correo); return { message: 'Data saved', data: saved }; } diff --git a/src/almacenamiento/almacenamiento.module.ts b/src/almacenamiento/almacenamiento.module.ts index af83d13..a557732 100644 --- a/src/almacenamiento/almacenamiento.module.ts +++ b/src/almacenamiento/almacenamiento.module.ts @@ -15,12 +15,13 @@ import { ConfigModule, ConfigService } from '@nestjs/config'; name: 'almacenamiento', type: 'mariadb', host: configService.get('HOST_TYL'), - port: configService.get('PORT_TYL'), + port: Number(configService.get('PORT_TYL')), username: configService.get('USUARIO_TYL'), password: configService.get('CONTRASENA_TYL'), database: configService.get('DATABASE_TYL'), entities: [Almacenamiento], - synchronize: false, + synchronize: true, + ssl: false, // <- importante }), }), TypeOrmModule.forFeature([Almacenamiento], 'almacenamiento'), diff --git a/src/almacenamiento/almacenamiento.service.ts b/src/almacenamiento/almacenamiento.service.ts index a5b6718..39a5e50 100644 --- a/src/almacenamiento/almacenamiento.service.ts +++ b/src/almacenamiento/almacenamiento.service.ts @@ -12,8 +12,12 @@ export class AlmacenamientoService { // Example method to create a new record async create(correo: string): Promise { - const nuevo = this.almacenamientoRepository.create({ correo }); - return this.almacenamientoRepository.save(nuevo); + const existente = await this.almacenamientoRepository.findOneBy({ correo }); + if (existente) { + return existente; // o lanzar un error si prefieres + } + const nuevo = this.almacenamientoRepository.create({ correo }); + return this.almacenamientoRepository.save(nuevo); } // Example method to get all records diff --git a/src/app.module.ts b/src/app.module.ts index cb4978b..ac20313 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -75,6 +75,7 @@ import { Almacenamiento } from './entities/almacenamiento.entity'; username: configService.get('DB_USER'), password: configService.get('DB_PASSWORD'), database: configService.get('DB_NAME'), + synchronize: true, entities: [ Evento, Participante,