Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

s10 activity #11

Open
wants to merge 1 commit into
base: vivian-costa
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions projeto-semana/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/node_modules
1,303 changes: 1,303 additions & 0 deletions projeto-semana/package-lock.json

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions projeto-semana/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "blog-reprograma",
"version": "1.0.0",
"description": "project for reprograma class",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon server.js"
},
"author": "vivian costa",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"nodemon": "^2.0.5"
}
}
7 changes: 7 additions & 0 deletions projeto-semana/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const app = require('./src/app');
const porta = 8080;

app.listen(porta, () => {
console.log("O servidor está rodando em http://localhost:" + porta)

})
10 changes: 10 additions & 0 deletions projeto-semana/src/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const express = require('express');
const app = express();

const blog = require('./routes/blog-routes');

app.use(express.json());

app.use('/', blog);

module.exports = app;
80 changes: 80 additions & 0 deletions projeto-semana/src/controllers/blog-controllers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
const { request, response } = require('express');
const helpers = require('../helpers/helpers');
const { keys } = require('../models/blog-models');
const blog = require('../models/blog-models');
let blogModel = require('../models/blog-models');

const getBlog = (request, response) => {
response.status(200).json(blogModel);
}

const getById = (request, response) => {
const { id } = request.params;

const blog = blogModel.find(blog => blog.id == id);

response.status(200).json(blog);
}

const getByTitle= (request, response) => {
const { titulo } = request.query;

const blog = blogModel.find(blog => blog.titulo == titulo);

response.status(200).json(blog);
}

//post
const createPost = (request, response) => {
const { titulo, conteudo, tags } = request.body;

const novoPost = {
id: helpers.obterNovoValor(blogModel),
titulo: titulo,
conteudo: conteudo,
tags: tags,
dataCriacao: helpers.novaData(blogModel)
}
blogModel.push(novoPost);

response.status(201).json(novoPost);
}

//delete
const deletePost = (request, response) => {
const { id } = request.params;

blogModel.filter(blog => blog.id != id);

response.json({ mensagem: "Post deletado com sucesso!"});
}

//put
const updatePost = (request, response) => {
const { id } = request.params;

const filtrarPostAtualizado = blogModel.find(blog => blog.id == id);

const index = blogModel. indexOf(filtrarPostAtualizado);

const obtainKeys = Object.keys(request.body);

obtainKeys.forEach(key => {
filtrarPostAtualizado[key] = request.body[key];
});

blogModel[index] = filtrarPostAtualizado;
response.status(200).json(blogModel[index]);
}




module.exports = {
getBlog,
getById,
getByTitle,
createPost,
deletePost,
updatePost
}
14 changes: 14 additions & 0 deletions projeto-semana/src/helpers/helpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const obterNovoValor = (array) => {
if (array.length > 0) {
return array[array.length - 1].id + 1
} else {
return 1
}
}

const novaData = () => new Date().toString()

module.exports = {
obterNovoValor,
novaData
}
19 changes: 19 additions & 0 deletions projeto-semana/src/models/blog-models.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const blog = [
{
id: 1,
titulo: "mulheres na tecnologia.",
conteudo: "artigo sobre o papel das mulheres no setor tecnológico.",
tags:["tecnologia", "mulheres"],
dataCriacao: new Date()
},

{
id: 2,
titulo: "programação e saúde mental.",
conteudo: "artigo sobre a saúde mental de mulheres programadoras em ambientes de trabalho hostis.",
tags:["saúde mental", "ambiente de trabalho", "mulheres", "programação"],
dataCriacao: new Date()
}
];

module.exports = blog
42 changes: 42 additions & 0 deletions projeto-semana/src/routes/blog-routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const { request } = require('express');
const express = require('express');
const router = express.Router();

const blogController = require('../controllers/blog-controllers');

//@route GET Blog
//@desc Retornar todo o blog
//@acces Public
router.get('/blog', blogController.getBlog);

//@route GET Blog
//@query Titulo
//@desc Retornar apenas títulos
//@acces Public
router.get('/blog/titulo', blogController.getByTitle);

//@route GET Blog
//@params :id
//@desc Retornar apenas uma única tarefa pelo seu id: identificador
//@acces Public
router.get('/blog/:id', blogController.getById);

//@route POST Blog
//@desc Criar um post no blog
//@access Public
//@endpoint http://localhost:porta/blog
router.post('/blog', blogController.createPost);

//@route DELETE Blog
//@desc Deletar um post no blog
//@access Public
//@endpoint http://localhost:porta/:id
router.delete('/blog/:id', blogController.deletePost);

//@route PUT tarefas
//@desc atualizar uma tarefa pelo seu identificador
//@access Public
//@endpoint http://localhost:porta/tarefas/:id
router.put('/blog/:id', blogController.updatePost);

module.exports = router;