Created
June 11, 2020 02:22
-
-
Save parzibyte/8b8d2ffaa73178d60bd5f588798125aa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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