From e9bc3f0078cc47f5b0f588c5b69db26611458e45 Mon Sep 17 00:00:00 2001 From: Fernando Date: Thu, 20 Dec 2018 19:13:51 -0500 Subject: [PATCH] Centralizacion de la conexion MySQL a la base de datos. Uso de una unica raiz para el backend. --- .gitignore | 2 + app.ts | 31 ----- package-lock.json | 26 +++- package.json | 8 +- src/components/AnimeView/BarraLateral.vue | 39 +++++- srv/Admin/ED/nuevoED.ts | 37 +++--- srv/Admin/ED/obtenerEDs.ts | 33 +++-- srv/Admin/Eps/crearLink.ts | 38 +++--- srv/Admin/Eps/estadisticas.ts | 34 +++++ srv/Admin/Eps/obtenerLinks.ts | 35 +++-- srv/Admin/Eps/obtenerVariantes.ts | 35 +++-- srv/Admin/OP/nuevoOP.ts | 30 ++--- srv/Admin/OP/obtenerOPs.ts | 33 +++-- srv/Admin/crearAnime.ts | 40 +++--- srv/Admin/obtenerTodosAnimes.ts | 28 ++-- srv/Animes/obtenerDatos.ts | 149 ++++++++++------------ srv/LinksAnimes/modificarLink.ts | 29 ++--- srv/LinksAnimes/obtenerLinks.ts | 145 +++++++++++---------- srv/index.ts | 24 +++- srv/mysql.ts | 17 --- 20 files changed, 404 insertions(+), 409 deletions(-) delete mode 100644 app.ts create mode 100644 srv/Admin/Eps/estadisticas.ts delete mode 100644 srv/mysql.ts diff --git a/.gitignore b/.gitignore index 271881e..5d0732a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,8 @@ yarn-error.log* # Archivos para el deploy *.js *.js.map +/srv/mysql.ts +/srv/DatosConexion.ts # Archivos de Materialize /src/materialize/ \ No newline at end of file diff --git a/app.ts b/app.ts deleted file mode 100644 index efa2b6b..0000000 --- a/app.ts +++ /dev/null @@ -1,31 +0,0 @@ -let express = require('express'); -let app = express(); - -app.use(express.static('dist')); - -// Que era history?? -// @ts-ignore -// app.use(history()); - -app.use(express.urlencoded()); -app.use(express.json()); - -app.get("/"); - -app.post('/links', require('./srv/LinksAnimes/obtenerLinks').obtenerLinks); -app.put('/links', require('./srv/LinksAnimes/modificarLink').modificarLinks); - -app.put('/a/', require('./srv/Admin/crearAnime').crearAnime); -app.get('/a/', require('./srv/Admin/obtenerTodosAnimes').obtenerTodosAnimes); - -app.get('/op/:id', require('./srv/Admin/OP/obtenerOPs').obtenerOPs); -app.post('/op/', require('./srv/Admin/OP/nuevoOP').nuevoOP); - -app.get('/ed/:anime_ID', require('./srv/Admin/ED/obtenerEDs').obtenerEDs); -app.post('/ed/', require('./srv/Admin/ED/nuevoED').nuevoED); - -app.get('/eps/variantes/:anime_ID', require('./srv/Admin/Eps/obtenerVariantes').obtenerVariantes); -app.get('/eps/links/:opcion_ID', require('./srv/Admin/Eps/obtenerLinks').obtenerLinks); -app.post('/eps/links/', require('./srv/Admin/Eps/crearLink').crearLink); - -app.listen(8080); diff --git a/package-lock.json b/package-lock.json index f8be5bc..3e00e41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "dev": true, "requires": { "@types/connect": "3.4.32", "@types/node": "10.12.5" @@ -44,6 +45,7 @@ "version": "3.4.32", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "dev": true, "requires": { "@types/node": "10.12.5" } @@ -51,12 +53,14 @@ "@types/events": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", + "dev": true }, "@types/express": { "version": "4.16.0", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "dev": true, "requires": { "@types/body-parser": "1.17.0", "@types/express-serve-static-core": "4.16.0", @@ -67,6 +71,7 @@ "version": "4.16.0", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "dev": true, "requires": { "@types/events": "1.2.0", "@types/node": "10.12.5", @@ -76,22 +81,35 @@ "@types/mime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", + "dev": true + }, + "@types/mysql": { + "version": "2.15.5", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.5.tgz", + "integrity": "sha512-4QAISTUGZbcFh7bqdndo08xRdES5OTU+JODy8VCZbe1yiXyGjqw1H83G43XjQ3IbC10wn9xlGd44A5RXJwNh0Q==", + "dev": true, + "requires": { + "@types/node": "10.12.5" + } }, "@types/node": { "version": "10.12.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.5.tgz", - "integrity": "sha512-GzdHjq3t3eGLMv92Al90Iq+EoLL+86mPfQhuglbBFO7HiLdC/rkt+zrzJJumAiBF6nsrBWhou22rPW663AAyFw==" + "integrity": "sha512-GzdHjq3t3eGLMv92Al90Iq+EoLL+86mPfQhuglbBFO7HiLdC/rkt+zrzJJumAiBF6nsrBWhou22rPW663AAyFw==", + "dev": true }, "@types/range-parser": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==", + "dev": true }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "dev": true, "requires": { "@types/express-serve-static-core": "4.16.0", "@types/mime": "2.0.0" diff --git a/package.json b/package.json index d5068bb..e350c7e 100644 --- a/package.json +++ b/package.json @@ -3,16 +3,13 @@ "version": "0.1.0", "private": true, "scripts": { - "start": "node app.js", + "start": "vue-cli-service express:run --port 8080", "serve": "vue-cli-service serve", "build": "vue-cli-service build", "express": "vue-cli-service express:watch", - "express:run": "vue-cli-service express:run", "deploy": "gcloud app deploy" }, "dependencies": { - "@types/express": "^4.16.0", - "@types/node": "^10.12.5", "connect-history-api-fallback": "^1.5.0", "express": "^4.16.4", "mysql": "^2.16.0", @@ -23,6 +20,9 @@ "yaml": "^1.0.2" }, "devDependencies": { + "@types/mysql": "^2.15.5", + "@types/express": "^4.16.0", + "@types/node": "^10.12.5", "@types/yaml": "^1.0.1", "@vue/cli-plugin-typescript": "^3.0.5", "@vue/cli-service": "^3.0.5", diff --git a/src/components/AnimeView/BarraLateral.vue b/src/components/AnimeView/BarraLateral.vue index 1a9c345..d79d655 100644 --- a/src/components/AnimeView/BarraLateral.vue +++ b/src/components/AnimeView/BarraLateral.vue @@ -1,12 +1,45 @@ diff --git a/srv/Admin/ED/nuevoED.ts b/srv/Admin/ED/nuevoED.ts index c791b6c..5be5439 100644 --- a/srv/Admin/ED/nuevoED.ts +++ b/srv/Admin/ED/nuevoED.ts @@ -10,30 +10,25 @@ const nuevoED = (req: any, res: any) => { const YAML = require('yaml'); const data: Data = YAML.parse(req.body.data); - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; - con.connect((err: Error) => { - if (!err && data) { + if (data) { - const query = `INSERT INTO ED (anime_ID, num_ED, nombre, artista, eps) VALUES ( ${data.anime_ID}, ${data.num_ED}, - ${con.escape(data.nombre)}, ${con.escape(data.artista)}, ${con.escape(data.eps)} )`; - con.query(query, (err: Error) => { - if (!err) { - res.send("exito: true"); - } else { - res.send("error: true"); - console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err); - } - }); + const query = `INSERT INTO ED (anime_ID, num_ED, nombre, artista, eps) VALUES ( ${data.anime_ID}, ${data.num_ED}, + ${con.escape(data.nombre)}, ${con.escape(data.artista)}, ${con.escape(data.eps)} )`; + con.query(query, (err: Error) => { + if (!err) { + res.send("exito: true"); + } else { + res.send("error: true"); + console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err); + } + }); - } else if (!err) { - res.send("error: true"); - console.log("Error. La data no existe en /Admin/ED/nuevoED (con.connect)"); - } else { - res.send("error: true"); - console.log("Error al conectarse a la base de datos en /Admin/ED/nuevoED (con.connect):\n" + err); - } - }); + } else { + res.send("error: true"); + console.log("Error. La data no existe en /Admin/ED/nuevoED (con.connect)"); + } }; diff --git a/srv/Admin/ED/obtenerEDs.ts b/srv/Admin/ED/obtenerEDs.ts index 144b5d6..d6e6735 100644 --- a/srv/Admin/ED/obtenerEDs.ts +++ b/srv/Admin/ED/obtenerEDs.ts @@ -11,28 +11,27 @@ const obtenerEDs = (req: any, res: any) => { const YAML = require('yaml'); const anime_ID: number = req.params.anime_ID; - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; - con.connect((err: Error) => { - if (!err) { - const query = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; - con.query(query, (err: Error, response: RespuestaED[]) => { - if (!err) { + if (anime_ID) { - res.send(YAML.stringify(response)); + const query = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; + con.query(query, (err: Error, response: RespuestaED[]) => { + if (!err) { - } else { - res.send("error: true"); - console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err); - } - }); + res.send(YAML.stringify(response)); - } else { - res.send("error: true"); - console.log("Error al conectarse a la base de datos en /Admin/ED/obtenerEDs (con.connect):\n" + err); - } - }); + } else { + res.send("error: true"); + console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err); + } + }); + + } else { + res.send("error: true"); + console.log("Error en /Admin/ED/obtenerEDs: anime_ID no existe."); + } }; diff --git a/srv/Admin/Eps/crearLink.ts b/srv/Admin/Eps/crearLink.ts index 9ecd606..8cd76c9 100644 --- a/srv/Admin/Eps/crearLink.ts +++ b/srv/Admin/Eps/crearLink.ts @@ -8,35 +8,31 @@ interface formatoDataARecibir { const crearLink = (req: any, res: any) => { - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const parametros: formatoDataARecibir = YAML.parse(req.body.params); - con.connect((err: Error) => { - if (!err && parametros) { - const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID}, - ${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`; - con.query(query, (err: Error) => { - if (!err) { + if (parametros) { - res.send("error: false"); + const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID}, + ${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`; + con.query(query, (err: Error) => { + if (!err) { - } else { - console.log("Error al ejecutar query en /Admin/Eps/crearEp -> con.query (linea 20). Query y error:\n" + query + "\n" + parametros); - res.send("error: true"); - } - }); + res.send("error: false"); - } else if (!err) { - console.log("Error. 'parametros' no existe en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + parametros); - res.send("error: true"); - } else { - console.log("Error al conectarse a la base de datos en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + err); - res.send("error: true"); - } - }); + } else { + console.log("Error al ejecutar query en /Admin/Eps/crearEp -> con.query (linea 20). Query y error:\n" + query + "\n" + parametros); + res.send("error: true"); + } + }); + + } else { + console.log("Error. 'parametros' no existe en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + parametros); + res.send("error: true"); + } }; diff --git a/srv/Admin/Eps/estadisticas.ts b/srv/Admin/Eps/estadisticas.ts new file mode 100644 index 0000000..126d5ba --- /dev/null +++ b/srv/Admin/Eps/estadisticas.ts @@ -0,0 +1,34 @@ +import {Connection, MysqlError} from "mysql"; +import * as core from "express-serve-static-core"; + +const con: Connection = require('../../index').conexionMySQL; +const YAML = require('yaml'); + +interface respuesta { + peso: string +} + +const estadisticas = (req: core.Request, res: core.Response) => { + + con.query(`SELECT peso FROM eps`,(err: MysqlError, respuestas: respuesta[]) => { + if (!err) { + + let totalMB = 0; + let cantidadEps = 0; + respuestas.forEach(data => { + totalMB += parseInt(data.peso); + cantidadEps++; + }); + + const respuesta: any = { + episodios: cantidadEps, + gigas: (totalMB/1024).toFixed(2) + }; + + res.send(YAML.stringify(respuesta)); + } + }); + +}; + +module.exports.estadisticas = estadisticas; \ No newline at end of file diff --git a/srv/Admin/Eps/obtenerLinks.ts b/srv/Admin/Eps/obtenerLinks.ts index e1233b5..0f77d9d 100644 --- a/srv/Admin/Eps/obtenerLinks.ts +++ b/srv/Admin/Eps/obtenerLinks.ts @@ -9,34 +9,29 @@ interface epsRespuesta { const obtenerLinks = (req: any, res: any) => { - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const opcion_ID = req.params.opcion_ID; - con.connect((err: Error) => { - if (!err && opcion_ID) { + if (opcion_ID) { - const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`; - con.query(query, (err: Error, response: epsRespuesta[]) => { - if (!err) { + const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`; + con.query(query, (err: Error, response: epsRespuesta[]) => { + if (!err) { - res.send(YAML.stringify(response)); + res.send(YAML.stringify(response)); - } else { - console.log("Error al ejecutar query en /Admin/Eps/obtenerEps con.query (linea 21). Query:\n" + query + "\nError: \n" + err); - res.send("error: true"); - } - }); + } else { + console.log("Error al ejecutar query en /Admin/Eps/obtenerEps con.query (linea 21). Query:\n" + query + "\nError: \n" + err); + res.send("error: true"); + } + }); - } else if (!err) { - console.log("Error. opcion_ID no existe en /Admin/Eps/obtenerEps con.connect (linea 8)"); - res.send("error: true"); - } else { - console.log(""); - res.send("error: true"); - } - }); + } else { + console.log("Error. opcion_ID no existe en /Admin/Eps/obtenerEps con.connect (linea 8)"); + res.send("error: true"); + } }; diff --git a/srv/Admin/Eps/obtenerVariantes.ts b/srv/Admin/Eps/obtenerVariantes.ts index 838ab38..b6b6a96 100644 --- a/srv/Admin/Eps/obtenerVariantes.ts +++ b/srv/Admin/Eps/obtenerVariantes.ts @@ -10,35 +10,30 @@ interface respuestaLinks { const obtenerVariantes = (req: any, res: any) => { - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const anime_ID: string = req.params.anime_ID; - con.connect((err: Error) => { - if (!err && anime_ID) { + if (anime_ID) { - const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`; + const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`; - con.query (query, (err: Error, response: respuestaLinks[]) => { - if (!err) { + con.query (query, (err: Error, response: respuestaLinks[]) => { + if (!err) { - res.send(YAML.stringify(response)); + res.send(YAML.stringify(response)); - } else { - console.log("Error al ejecutar query sql. La query era:\n" + query + "\n y el error es:\n" + err); - res.send("error: true"); - } - }); + } else { + console.log("Error al ejecutar query sql. La query era:\n" + query + "\n y el error es:\n" + err); + res.send("error: true"); + } + }); - } else if (!err) { - console.log("Error. anime_ID no existe en Admin/Eps/obtenerVariantes con.connect:\n" + anime_ID); - res.send("error: true"); - } else { - console.log("Error al conectarse a la Base de Datos en Admin/Eps/obtenerVariantes con.connect:\n" + err); - res.send("error: true"); - } - }); + } else { + console.log("Error. anime_ID no existe en Admin/Eps/obtenerVariantes con.connect:\n" + anime_ID); + res.send("error: true"); + } }; diff --git a/srv/Admin/OP/nuevoOP.ts b/srv/Admin/OP/nuevoOP.ts index 52c94ad..c4ca932 100644 --- a/srv/Admin/OP/nuevoOP.ts +++ b/srv/Admin/OP/nuevoOP.ts @@ -1,32 +1,24 @@ const nuevoOP = (req: any, res: any) => { - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const data = YAML.parse(req.body.data); - con.connect((err: any) => { - if (!err) { + con.query( + `INSERT INTO OP (anime_ID, num_OP, nombre, artista, eps) VALUES \ + ( ${con.escape(data['anime_ID'])}, ${con.escape(data['num_OP'])}, ${con.escape(data['nombre'])}, + ${con.escape(data['artista'])}, ${con.escape(data['eps'])} )`, + (err: any) => { + if (!err) { - con.query( - `INSERT INTO OP (anime_ID, num_OP, nombre, artista, eps) VALUES \ - ( ${con.escape(data['anime_ID'])}, ${con.escape(data['num_OP'])}, ${con.escape(data['nombre'])}, - ${con.escape(data['artista'])}, ${con.escape(data['eps'])} )`, - (err: any) => { - if (!err) { + res.send("Exito :D"); - res.send("Exito :D"); - - } else { - - } - } - ); - - } else { + } else { + } } - }); + ); }; diff --git a/srv/Admin/OP/obtenerOPs.ts b/srv/Admin/OP/obtenerOPs.ts index 031c96c..5304311 100644 --- a/srv/Admin/OP/obtenerOPs.ts +++ b/srv/Admin/OP/obtenerOPs.ts @@ -1,31 +1,28 @@ const obtenerOPs = (req: any, res: any) => { - const con = require('../../mysql').obtenerConexionMySql(); + const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const animeID: number = req.params.id; - con.connect((err: any) => { - if (!err && animeID) { + if (animeID) { - const query = `SELECT * FROM OP WHERE anime_ID=${animeID}`; - con.query( query, (err: any, resultado: object) => { - if (!err) { + const query = `SELECT * FROM OP WHERE anime_ID=${animeID}`; + con.query( query, (err: any, resultado: object) => { + if (!err) { - res.send(YAML.stringify(resultado)); + res.send(YAML.stringify(resultado)); - } else { - console.log("Error al ejecutar query en /Admin/OP/obtenerOPs (con.query):\n" + query + "\n" + err); - res.send("error: true"); - } - }); - - } else { - console.log("Error al conectarse a la base de datos en /Admin/OP/obtenerOPs (con.connect):\n" + err); - res.send("error: true"); - } - }); + } else { + console.log("Error al ejecutar query en /Admin/OP/obtenerOPs (con.query):\n" + query + "\n" + err); + res.send("error: true"); + } + }); + } else { + console.log("Error en /Admin/OP/obtenerOPs: animeID no existe"); + res.send("error: true"); + } }; module.exports.obtenerOPs = obtenerOPs; \ No newline at end of file diff --git a/srv/Admin/crearAnime.ts b/srv/Admin/crearAnime.ts index 1faa1b9..936afee 100644 --- a/srv/Admin/crearAnime.ts +++ b/srv/Admin/crearAnime.ts @@ -1,39 +1,31 @@ const crearAnime = (req: any, res: any) => { - const con = require('../mysql').obtenerConexionMySql(); + const con = require('../index').conexionMySQL; const YAML = require('yaml'); if (req.body.data) { const data = YAML.parse(req.body.data); - con.connect((err: any) => { - if (!err) { - const query = `INSERT INTO animes - (titulo, link, imgUrl, descripcion, estudio, eps, alAire, temporada, anio, fuente, generos, color) - VALUES (${con.escape(data.titulo)}, ${con.escape(data.link)}, ${con.escape(data.imgUrl)}, ${con.escape(data.descripcion)}, - ${con.escape(data.estudio)}, ${data.eps}, ${con.escape(data.alAire)}, ${con.escape(data.temporada)}, ${con.escape(data.anio)}, - ${con.escape(data.fuente)}, ${con.escape(data.generos)}, ${con.escape(data.color)})` - ; - con.query( - query, - (err: any) => { - if (!err) { - res.send("Exito"); - } else { - res.send("Fracaso :c\n" + err); - } - } - ); - } else { - res.send("Error al conectarse...\n" + err); + const query = `INSERT INTO animes + (titulo, link, imgUrl, descripcion, estudio, eps, alAire, temporada, anio, fuente, generos, color) + VALUES (${con.escape(data.titulo)}, ${con.escape(data.link)}, ${con.escape(data.imgUrl)}, ${con.escape(data.descripcion)}, + ${con.escape(data.estudio)}, ${data.eps}, ${con.escape(data.alAire)}, ${con.escape(data.temporada)}, ${con.escape(data.anio)}, + ${con.escape(data.fuente)}, ${con.escape(data.generos)}, ${con.escape(data.color)})` + ; + con.query( + query, + (err: any) => { + if (!err) { + res.send("Exito"); + } else { + res.send("Fracaso :c\n" + err); + } } - }); + ); } else { - res.send("Error. El servidor no recibio ningun dato."); - } }; diff --git a/srv/Admin/obtenerTodosAnimes.ts b/srv/Admin/obtenerTodosAnimes.ts index 8716439..0769dfb 100644 --- a/srv/Admin/obtenerTodosAnimes.ts +++ b/srv/Admin/obtenerTodosAnimes.ts @@ -1,29 +1,21 @@ const obtenerTodosAnimes = (req: any, res: any) => { - const con = require('../mysql').obtenerConexionMySql(); + const con = require('../index').conexionMySQL; const YAML = require('yaml'); - con.connect((err: any) => { - if (!err) { + con.query( + `SELECT anime_ID ,titulo FROM animes ORDER BY anime_ID DESC `, + (err: any, respuesta: any) => { + if (!err) { - con.query( - `SELECT anime_ID ,titulo FROM animes ORDER BY anime_ID DESC `, - (err: any, respuesta: any) => { - if (!err) { + const resultado = YAML.stringify(respuesta); + res.send(resultado); - const resultado = YAML.stringify(respuesta); - res.send(resultado); - - } else { - - } - } - ); - - } else { + } else { // TODO + } } - }); + ); }; diff --git a/srv/Animes/obtenerDatos.ts b/srv/Animes/obtenerDatos.ts index ba30790..179de17 100644 --- a/srv/Animes/obtenerDatos.ts +++ b/srv/Animes/obtenerDatos.ts @@ -1,3 +1,5 @@ +import {Connection} from "mysql"; + interface RespuestaDatos { estudio: string, eps: number, @@ -35,93 +37,82 @@ const YAML = require('yaml'); const obtenerDatos = (req: any, res: any) => { - const anime_ID = req.paams.anime_ID; + const anime_ID = req.params.anime_ID; - const con = require('../mysql').obtenerConexionMySql(); + const con: Connection = require('../index').conexionMySQL; - con.connect((err: Error) => { + const respuesta: any = {}; + const gestor = new GestorDeTareas(() => { + console.log(YAML.stringify(respuesta)); + res.send(YAML.stringify(respuesta)); + }); + + const query1 = `SELECT estudio, eps, alAire, temporada, anio, fuente, generos FROM animes WHERE anime_ID=${anime_ID}`; + gestor.agregarTarea(); + con.query(query1, (err: Error, res: RespuestaDatos[]) => { if (!err) { + const data = res[0]; - const respuesta: any = {}; - const gestor = new GestorDeTareas(() => { - console.log(YAML.stringify(respuesta)); - res.send(YAML.stringify(respuesta)); - }); - - const query1 = `SELECT estudio, eps, alAire, temporada, anio, fuente, generos FROM animes WHERE anime_ID=${anime_ID}`; - gestor.agregarTarea(); - con.query(query1, (err: Error, res: RespuestaDatos[]) => { - if (!err) { - - const data = res[0]; - - respuesta.estudio = data.estudio; - respuesta.eps = data.estudio; - respuesta.alAire = data.alAire; - respuesta.temporada = data.temporada; - respuesta.anio = data.anio; - respuesta.fuente = data.fuente; - respuesta.generos = data.generos; - - gestor.terminarTarea(); - - } else { - respuesta.error = true; - console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(1):\n${query1}\n${err}`); - } - }); - - const query2 = `SELECT * FROM OP WHERE anime_ID=${anime_ID}`; - gestor.agregarTarea(); - con.query(query2, (err: Error, res: RespuestaOP[]) => { - if (!err) { - - const ops: any = {}; - for (const op of res) { - ops[op.num_OP] = { - nombre: op.nombre, - artista: op.artista, - eps: op.eps - } - } - - respuesta.OP = ops; - gestor.terminarTarea(); - - } else { - respuesta.error = true; - console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(2):\n${query2}\n${err}`); - } - }); - - const query3 = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; - gestor.agregarTarea(); - con.query(query3, (err: Error, res: RespuestaED[]) => { - if (!err) { - - const eds: any = {}; - for (const ed of res) { - eds[ed.num_ED] = { - nombre: ed.nombre, - artista: ed.artista, - eps: ed.eps - } - } - - respuesta.ED = eds; - gestor.terminarTarea(); - - } else { - respuesta.error = true; - console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(3):\n${query3}\n${err}`); - } - }); + respuesta.estudio = data.estudio; + respuesta.eps = data.estudio; + respuesta.alAire = data.alAire; + respuesta.temporada = data.temporada; + respuesta.anio = data.anio; + respuesta.fuente = data.fuente; + respuesta.generos = data.generos; + gestor.terminarTarea(); } else { - console.log("Error al conectarse a BBDD en /Animes/obtenerDatos (con.connect):\n" + err); - res.send("error: true"); + respuesta.error = true; + console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(1):\n${query1}\n${err}`); + } + }); + + const query2 = `SELECT * FROM OP WHERE anime_ID=${anime_ID}`; + gestor.agregarTarea(); + con.query(query2, (err: Error, res: RespuestaOP[]) => { + if (!err) { + + const ops: any = {}; + for (const op of res) { + ops[op.num_OP] = { + nombre: op.nombre, + artista: op.artista, + eps: op.eps + } + } + + respuesta.OP = ops; + gestor.terminarTarea(); + + } else { + respuesta.error = true; + console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(2):\n${query2}\n${err}`); + } + }); + + const query3 = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; + gestor.agregarTarea(); + con.query(query3, (err: Error, res: RespuestaED[]) => { + if (!err) { + + const eds: any = {}; + for (const ed of res) { + eds[ed.num_ED] = { + nombre: ed.nombre, + artista: ed.artista, + eps: ed.eps + } + } + + respuesta.ED = eds; + gestor.terminarTarea(); + + } else { + respuesta.error = true; + console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(3):\n${query3}\n${err}`); } }); diff --git a/srv/LinksAnimes/modificarLink.ts b/srv/LinksAnimes/modificarLink.ts index 699d473..4f2975f 100644 --- a/srv/LinksAnimes/modificarLink.ts +++ b/srv/LinksAnimes/modificarLink.ts @@ -2,27 +2,18 @@ const modificarLink = (req: any, res: any) => { const ep_ID = req.body.ep_ID; - const con = require('../mysql').obtenerConexionMySql(); + const con = require('../index').conexionMySQL; - con.connect((err: any) => { - if (!err) { - - con.query( - `UPDATE eps SET visitas=visitas+1 WHERE ep_ID=${ep_ID};`, - (err: Error) => { - if (!err) { - res.send("Actualizado con exito."); - } else { - console.log("Error al actualizar el episodio :c"); - } - } - ); - - } else { - console.log("Error al conectarse a base de datos."); - con.end(); + con.query( + `UPDATE eps SET visitas=visitas+1 WHERE ep_ID=${ep_ID};`, + (err: Error) => { + if (!err) { + res.send("Actualizado con exito."); + } else { + console.log("Error al actualizar el episodio :c"); + } } - }); + ); }; diff --git a/srv/LinksAnimes/obtenerLinks.ts b/srv/LinksAnimes/obtenerLinks.ts index bf8ee3c..fe05509 100644 --- a/srv/LinksAnimes/obtenerLinks.ts +++ b/srv/LinksAnimes/obtenerLinks.ts @@ -50,103 +50,102 @@ interface Links { const obtenerLinks = (req: any, res: any) => { - const con = require('../mysql').obtenerConexionMySql(); + const con = require('../index').conexionMySQL; const animeID = req.body.animeID; - con.connect((err: any) => { - if (!err && animeID !== undefined) { - const data: Links = {aviso: '', sigEp: '', opciones: {}}; + if (animeID) { - con.query( - `SELECT * FROM links WHERE anime_ID=${animeID} `, - (err: Error, response: links[]) => { - if (!err && response[0] ) { + const data: Links = {aviso: '', sigEp: '', opciones: {}}; - const subData: links = response[0]; - data.aviso = subData.aviso; - data.sigEp = subData.sigEp; + con.query( + `SELECT * FROM links WHERE anime_ID=${animeID} `, + (err: Error, response: links[]) => { + if (!err && response[0] ) { + + const subData: links = response[0]; + data.aviso = subData.aviso; + data.sigEp = subData.sigEp; - const gestorOpciones = new GestorDeTareas(() => { - res.send(YAML.stringify(data)); - }); + const gestorOpciones = new GestorDeTareas(() => { + res.send(YAML.stringify(data)); + }); - con.query( - `SELECT * FROM links_opciones WHERE links_ID=${subData.links_ID}`, - (err: Error, response: links_opciones[]) => { - if (!err && response[0]) { + con.query( + `SELECT * FROM links_opciones WHERE links_ID=${subData.links_ID}`, + (err: Error, response: links_opciones[]) => { + if (!err && response[0]) { - for (const opcionID in response) { - const opcion = response[opcionID]; + for (const opcionID in response) { + const opcion = response[opcionID]; - gestorOpciones.agregarTarea(); + gestorOpciones.agregarTarea(); - data.opciones[opcion.num_opcion] = { - formato: opcion.formato, - res: opcion.res, - servidor: opcion.servidor, - color: opcion.color, - eps: {} - }; + data.opciones[opcion.num_opcion] = { + formato: opcion.formato, + res: opcion.res, + servidor: opcion.servidor, + color: opcion.color, + eps: {} + }; - con.query( - `SELECT * FROM eps WHERE opcion_ID=${opcion.opcion_ID}`, - (err: Error, response: eps[]) => { - if (!err && response[0]) { + con.query( + `SELECT * FROM eps WHERE opcion_ID=${opcion.opcion_ID}`, + (err: Error, response: eps[]) => { + if (!err && response[0]) { - for (const epID in response) { - const ep = response[epID]; + for (const epID in response) { + const ep = response[epID]; - data.opciones[opcion.num_opcion].eps[ep.num_ep] = { - ep_ID: ep.ep_ID, - visitas: ep.visitas, - peso: ep.peso, - link: ep.link - }; - } - - gestorOpciones.terminarTarea(); - } else if (!err) { - console.log("No existen episodios para esta variante"); - - res.send(`{ "exito": false }`); - } else { - console.log("Error al obtener eps:\n" + err); - res.send(`{ "exito": false }`); + data.opciones[opcion.num_opcion].eps[ep.num_ep] = { + ep_ID: ep.ep_ID, + visitas: ep.visitas, + peso: ep.peso, + link: ep.link + }; } + + gestorOpciones.terminarTarea(); + } else if (!err) { + console.log("No existen episodios para esta variante"); + + res.send(`{ "exito": false }`); + } else { + console.log("Error al obtener eps:\n" + err); + res.send(`{ "exito": false }`); } - ); + } + ); - } - } else if (!err) { - console.log("No existen links_opciones "); - res.send(`{ "exito": false }`); - } else { - console.log("Error al obtener links opciones:\n" + err); - res.send(`{ "exito": false }`); } + } else if (!err) { + console.log("No existen links_opciones "); + res.send(`{ "exito": false }`); + } else { + console.log("Error al obtener links opciones:\n" + err); + res.send(`{ "exito": false }`); } - ); - - } else if (!err) { - console.log("Error: La consulta no dio ningun resultado en obtenerLinks"); - res.send('{ "exito": false }'); - } else { - console.log("Error al ejecutar Query en obtenerLinks.\n" + err); - res.send('{ "exito": false }'); - } + } + ); + } else if (!err) { + console.log("Error: La consulta no dio ningun resultado en obtenerLinks"); + res.send('{ "exito": false }'); + } else { + console.log("Error al ejecutar Query en obtenerLinks.\n" + err); + res.send('{ "exito": false }'); } - ); + + } + ); - } else { - console.log("Hubo un error al conectarse a la base de datos :c"); - res.send(`{ "exito": false }`); - } - }); + } else { + console.log("AnimeID no existe"); + res.send(`{ "exito": false }`); + } }; diff --git a/srv/index.ts b/srv/index.ts index ceca558..2af28f3 100644 --- a/srv/index.ts +++ b/srv/index.ts @@ -1,6 +1,8 @@ import express from 'express'; +import * as core from "express-serve-static-core"; +import {MysqlError} from "mysql"; -export default (app:any) => { +export default (app: core.Express) => { app.use(express.json()); app.use(express.urlencoded()); @@ -23,4 +25,24 @@ export default (app:any) => { app.get('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks); app.post('/eps/links/', require('./Admin/Eps/crearLink').crearLink); + app.get('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas); } + +const conexionMySQL = (() => { + const mysql = require('mysql'); + const SQL_CONNECT_DATA = require('./DatosConexion').DatosConexion; + + const con = mysql.createConnection(SQL_CONNECT_DATA); + + con.connect((err: MysqlError) => { + if (!err) { + console.log("MySQL iniciado c:"); + } else { + throw err; + } + }); + + return con; +})(); + +module.exports.conexionMySQL = conexionMySQL; \ No newline at end of file diff --git a/srv/mysql.ts b/srv/mysql.ts deleted file mode 100644 index 61c3a1f..0000000 --- a/srv/mysql.ts +++ /dev/null @@ -1,17 +0,0 @@ -const obtenerConexionMySql = () => { - - const mysql = require('mysql'); - const SQL_CONNECT_DATA:object = { - // Solo para produccion habilitar socketPath - // socketPath: '/cloudsql/pseudosubs:us-central1:base-principal', - user: 'root', - password: 'GgwTo5GryvDhAr06wk5opKhd', - database: 'animes_links', - multipleStatements: true - }; - - return mysql.createConnection(SQL_CONNECT_DATA); - -}; - -module.exports.obtenerConexionMySql = obtenerConexionMySql; \ No newline at end of file