Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created June 11, 2020 02:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/8b8d2ffaa73178d60bd5f588798125aa to your computer and use it in GitHub Desktop.
Save parzibyte/8b8d2ffaa73178d60bd5f588798125aa to your computer and use it in GitHub Desktop.
const conexion = require("./conexion")
const fs = require("fs");
const path = require("path");
module.exports = {
insertar(nombre, descripcion, precio) {
return new Promise((resolve, reject) => {
conexion.query(`insert into productos
(nombre, descripcion, precio)
values
(?, ?, ?)`,
[nombre, descripcion, precio], (err, resultados) => {
if (err) reject(err);
else resolve(resultados.insertId);
});
});
},
agregarFoto(idProducto, nombreFoto) {
return new Promise((resolve, reject) => {
conexion.query(`insert into fotos_productos
(id_producto, foto)
values
(?, ?)`,
[idProducto, nombreFoto], (err, resultados) => {
if (err) reject(err);
else resolve(resultados.insertId);
});
});
},
obtener() {
return new Promise((resolve, reject) => {
conexion.query(`select id, nombre, descripcion, precio from productos`,
(err, resultados) => {
if (err) reject(err);
else resolve(resultados);
});
});
},
obtenerConFotos() {
return new Promise((resolve, reject) => {
conexion.query(`select * from productos`,
async (err, resultados) => {
if (err) reject(err);
else {
/*
Si existe un dios, que me disculpe por este no-optimizado e ineficiente fragmento de código
*/
for (let x = 0; x < resultados.length; x++) {
resultados[x].foto = await this.obtenerPrimeraFoto(resultados[x].id);
}
resolve(resultados);
}
});
});
},
obtenerPrimeraFoto(idProducto) {
return new Promise((resolve, reject) => {
conexion.query(`select foto from fotos_productos WHERE id_producto = ? limit 1`,
[idProducto],
(err, resultados) => {
if (err) reject(err);
else resolve(resultados[0].foto);
});
});
},
obtenerFotos(idProducto) {
return new Promise((resolve, reject) => {
conexion.query(`select id_producto, foto FROM fotos_productos WHERE id_producto = ?`,
[idProducto],
(err, resultados) => {
if (err) reject(err);
else resolve(resultados);
});
});
},
obtenerPorId(id) {
return new Promise((resolve, reject) => {
conexion.query(`select id, nombre,descripcion, precio from productos where id = ?`,
[id],
(err, resultados) => {
if (err) reject(err);
else resolve(resultados[0]);
});
});
},
actualizar(id, nombre, precio) {
return new Promise((resolve, reject) => {
conexion.query(`update productos
set nombre = ?,
precio = ?
where id = ?`,
[nombre, precio, id],
(err) => {
if (err) reject(err);
else resolve();
});
});
},
eliminar(id) {
return new Promise(async (resolve, reject) => {
const fotos = await this.obtenerFotos(id);
for (let m = 0; m < fotos.length; m++) {
await fs.unlinkSync(path.join(__dirname, "fotos_productos", fotos[m].foto));
}
conexion.query(`delete from productos
where id = ?`,
[id],
(err) => {
if (err) reject(err);
else resolve();
});
});
},
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment