Centralizacion de la conexion MySQL a la base de datos. Uso de una unica raiz para el backend.

master
Fernando 2018-12-20 19:13:51 -05:00
parent 51c4651409
commit e9bc3f0078
20 changed files with 404 additions and 409 deletions

2
.gitignore vendored
View File

@ -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/

31
app.ts
View File

@ -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);

26
package-lock.json generated
View File

@ -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"

View File

@ -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",

View File

@ -1,12 +1,45 @@
<template>
<div class="caja colorTexto background2">
Esta es la barra lateral.
<div>
<div class="caja colorTexto background2">
Esta es la barra lateral.
</div>
<div class="caja colorTexto background2">
Estadisticas:<br>
<br>
Hemos subido <b>{{ estadisticas.episodios }}</b> episodios,<br>
haciendo un total de <b>{{ estadisticas.gigas }} GB.</b>
</div>
</div>
</template>
<script>
const YAML = require('yaml');
export default {
name: "BarraLateral"
name: "BarraLateral",
data: function (){
return {
estadisticas: {
episodios: 'más de 200',
gigas: 'más de 65'
}
};
},
created: function () {
const vm = this;
const xhr = new XMLHttpRequest();
xhr.open("GET", "/estadisticas");
xhr.onload = () => {
console.log(xhr.responseText);
const respuesta = YAML.parse(xhr.responseText);
if (!respuesta.error) {
vm.estadisticas = respuesta;
} else {
console.log("Error al obtener las estadisticas :c");
}
};
xhr.send();
}
}
</script>

View File

@ -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)");
}
};

View File

@ -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.");
}
};

View File

@ -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");
}
};

View File

@ -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;

View File

@ -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");
}
};

View File

@ -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");
}
};

View File

@ -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 {
}
}
});
);
};

View File

@ -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;

View File

@ -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.");
}
};

View File

@ -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
}
}
});
);
};

View File

@ -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}`);
}
});

View File

@ -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");
}
}
});
);
};

View File

@ -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 }`);
}
};

View File

@ -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;

View File

@ -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;