Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
juangens2 committed Feb 6, 2024
0 parents commit 80f3d10
Show file tree
Hide file tree
Showing 3,080 changed files with 469,749 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/api-rest-red-social.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions .idea/aws.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions arrancar-proyecto.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
start cmd.exe /k "cd C:\Program Files\MongoDB\Server\5.0\bin && .\mongod.exe"
start cmd.exe /k "cd C:\xampp\htdocs\api-rest-red-social && npm start"
181 changes: 181 additions & 0 deletions controllers/follow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
const mongoose = require("mongoose");
const Follow = require("../models/follow");
const mongoosePaginate = require("mongoose-paginate-v2");

// Configurar la paginación en el modelo Follow
//Follow.paginate = mongoosePaginate;

// Importar servicio
const followService = require("../services/followUserIds");


// Acciones de prueba
const pruebaFollow = (req, res) => {
return res.status(200).send({
message: "Mensaje enviado desde: controllers/follow.js"
});
}

// Accion de guardar un follow
const save = (req, res) => {
// Conseguir datos por body
const params = req.body;

// Sacar ID del usuario identificado
const identity = req.user;

// Crear objeto con modelo follow
let userToFollow = new Follow({
user: identity.id,
followed: params.followed
});

// Guardar objeto en bbdd
userToFollow.save()
.then(followStored => {
if (!followStored) {
return res.status(505).send({
status: "error",
message: "No se ha podido guardar el follow"
});
}

return res.status(200).send({
status: "success",
identity: req.user,
follow: followStored
});
})
.catch(error => {
return res.status(505).send({
status: "error",
message: "No se ha podido guardar el follow",
error: error.message
});
});
}

// Accion de borrar un follow
const unfollow = async (req, res) => {
try {
const userIde = req.user.id;
const followedId = req.params.id;

const follow = await Follow.findOneAndDelete({
user: userIde,
followed: followedId
});

if (!follow) {
return res.status(404).send({
status: "error",
message: "No se encontró el follow para borrar"
});
}

return res.status(200).send({
status: "success",
message: "El follow se ha borrado correctamente",
identity: req.user,
followDeleted: follow
});
} catch (error) {
console.error("Error al intentar borrar el follow:", error);
return res.status(500).send({
status: "error",
message: "Error interno al intentar borrar el follow"
});
}
};
// Accion de listar los follows de un usuario (siguiendo )
const following = async (req, res) => {
try {
let userId = req.user.id;
if (req.params.id) userId = req.params.id;

let page = 1;
if (req.params.page) page = req.params.page;

const itemsPerPage = 5;

const options = {
page: page,
limit: itemsPerPage,
populate: {
path: 'user followed',
select: '-password -__v'
}
};

const result = await Follow.paginate({ user: userId }, options);

let followUserIds = await followService.followUserIds(req.user.id);

return res.status(200).send({
status: "success",
message: "Listado de usuarios que estoy siguiendo",
follows: result.docs,
total: result.totalDocs,
pages: result.totalPages,
user_following: followUserIds.following,
user_follow_me: followUserIds.followers
});
} catch (error) {
console.error("Error al obtener el listado de usuarios seguidos:", error);
return res.status(500).send({
status: "error",
message: "Error al obtener el listado de usuarios seguidos.",
error: error.message
});
}
};

// Accion de listado de los usuarios que me siguen (soy seguido)
const followers = async (req, res) => {
try {
let userId = req.user.id;

if (req.params.id) userId = req.params.id;

let page = 1;

if (req.params.page) page = req.params.page;

const itemsPerPage = 5;

const follows = await Follow.find({ followed: userId })
.populate("user followed", "-password -role -__v")
.skip((page - 1) * itemsPerPage)
.limit(itemsPerPage)
.exec();

const total = await Follow.countDocuments({ followed: userId });

let followUserIds = await followService.followUserIds(req.user.id);

return res.status(200).send({
status: "success",
message: "listado de usuarios que me siguen",
follows,
total,
pages: Math.ceil(total / itemsPerPage),
user_following: followUserIds.following,
user_follow_me: followUserIds.followers
});
} catch (error) {
return res.status(500).send({
status: "error",
message: "Error al obtener seguidores"
});
}


}

module.exports = {
pruebaFollow,
save,
unfollow,
following,
followers
}
68 changes: 68 additions & 0 deletions controllers/publication.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const Publication = require("../models/publication")

// Acciones de prueba
const pruebaPublication = (req, res) => {
return res.status(200).send({
message: "Mensaje enviado desde: controllers/publication.js"
});
}

// Guardar Publicaciones
const save = async (req, res) => {
try {
// Recoger datos
const params = req.body;

// Si no llegan, dar respuesta negativa
if (!params.text) {
return res.status(400).send({
status: "error",
message: "Debes enviar el texto de la publicación"
});
}

// Crear y rellenar el objeto
let newPublication = new Publication(params);
newPublication.user = req.user.id;

// Guardar objeto en la bbdd usando async/await
const publicationStored = await newPublication.save();

if (!publicationStored) {
return res.status(400).send({
status: "error",
message: "No se ha guardado la publicación"
});
}

return res.status(200).send({
status: "success",
message: "Publicación guardada",
publicationStored
});
} catch (error) {
return res.status(500).send({
status: "error",
message: "Error al guardar la publicación en la base de datos"
});
}
}


// Sacar una sola publicaciones

// Listas publicaciones

// Listar publicaciones de un usuario

// Eliminar publicaciones

// Subir ficheros

// Devolver archivos multimedia


module.exports = {
pruebaPublication,
save
}
Loading

0 comments on commit 80f3d10

Please sign in to comment.