Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x | const HiloModel = require('../models/hilo.js');
const UsuarioModel = require('../models/usuario.js');
const authConfig = require('../config/auth.js');
const jwt = require('jsonwebtoken');
// Clase Hilo donde contiene todos los metodos(funciones de clases llaman metodos).
class Hilo {
constructor() {
}
// Función de crear un Hilo.
async crearHilo(body) {
const session = await HiloModel.startSession();
session.startTransaction();
let hiloNuevo = await HiloModel.create([body], { session: session }).then(hiloNuevo => {
return { status: 201, datos: hiloNuevo }
}).catch(error => {
return { status: 400, datos: { error: error.message } }
});
let duenoDelHilo = await UsuarioModel.findByIdAndUpdate(body.usuario.usuarioId, { $push: { publicaciones: hiloNuevo.datos } }, { new: true, session: session }).then(dueno => {
return { status: 200, usuario: dueno }
}).catch(error => {
return { status: 400 }
})
if (hiloNuevo.status === 201 && duenoDelHilo.status === 200) {
await session.commitTransaction();
session.endSession();
} else E{
await session.abortTransaction();
session.endSession();
}
return hiloNuevo;
}
// Función mostrar todos los Hilos.
async traerHilos() {
let hilosEncontrados = await HiloModel.find().then(hilo => {
return { status: 200, datos: hilo }
}).catch(error => {
return { status: 404, datos: { error: error.message } }
});
return hilosEncontrados;
}
// Función mostrar un Hilo por ID.
async traerHiloId(id) {
let hiloEncontrado = await HiloModel.findById(id).then(hilo => {
return { status: 200, datos: hilo }
}).catch(error => {
return { status: 404, datos: { error: error.message } }
});
return hiloEncontrado;
}
async getLikesDeHilo(id) {
let hiloEncontrado = await HiloModel.findById(id).select('likes').then(hilo => {
return { status: 200, datos: hilo }
}).catch(error => {
return { status: 404, datos: { error: error.message } }
});
return hiloEncontrado;
}
// Función de actualizar un Hilo.
async cambiaHilo(id, body) {
let hiloActualizado = await HiloModel.findByIdAndUpdate(id, body, {new: true}).then(hiloActualizado => {
return { status: 200, datos: hiloActualizado }
}).catch(error => {
return { status: 400, datos: { error: error.message } }
});
return hiloActualizado;
}
// Funcion de borrar un Hilo por ID.
async borrarHilo(id) {
return await HiloModel.findByIdAndRemove(id).then(hiloBorrado => {
return {
status: 200,
datos: {
hilo: `Hilo con el titulo ${hiloBorrado.titulo} ha sido borrado con suceso`
}
}
}).catch(error => {
return {
status: 404,
datos: {
error: error.message
}
}
});
}
}
let HiloController = new Hilo();
module.exports = HiloController; |