diff --git a/servidor-em-aula/README.md b/servidor-em-aula/README.md index 4988cf8..5e82bf9 100644 --- a/servidor-em-aula/README.md +++ b/servidor-em-aula/README.md @@ -10,23 +10,29 @@ - devo conseguir atualizar qualquer parte do post separadamente ## rotas -[GET] "/posts" -getAll que retorna todos os posts +[GET] "/posts" +getAll que retorna todos os posts +[GET] "/posts/:id" +getById que retorna um post especifico + +[DELETE] "/posts/:id" deletePost deleta um post + +[POST] "/posts/create" +createPost criar publicação + json + { + "id": randomico, + "dataCriacao": new Date(), + "titulo": "string", + "conteudo": "string", + "etiquetas": [LISTA] + } + +[PUT] "posts/:id" +replacePost atualiza postagem/publicação + +[PATCH] "posts/updateTitle/:id" +updateTitle atualizar somente o titulo da postagem +[PATCH] "/posts/update/:id" +updateAnything atualizar qualquer parte do post separadamente -[GET] "/posts/:id" -getById que retorna um post especifico - -[DELETE] "/posts/:id" -deletePost deleta um post - -[POST] "/posts/create" -createPost criar publicação - -[PUT] "posts/:id" -replacePost atualiza postagem/publicação - -[PATCH] "posts/updateTitle/:id" -updateTitle atualizar somente o titulo da postagem - -[PATCH] "/posts/update/:id" -updateAnything atualizar qualquer parte do post separadamente \ No newline at end of file diff --git a/servidor-em-aula/package.json b/servidor-em-aula/package.json index f546ec2..b7254ad 100644 --- a/servidor-em-aula/package.json +++ b/servidor-em-aula/package.json @@ -1,4 +1,23 @@ { + + "name": "servidor-em-aula", + "version": "1.0.0", + "description": "", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "nodemon server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "express": "^4.17.1", + "nodemon": "^2.0.7" + } +} + "name": "servidor-em-aula", "version": "1.0.0", "description": "", diff --git a/servidor-em-aula/server.js b/servidor-em-aula/server.js index eb423fe..895b590 100644 --- a/servidor-em-aula/server.js +++ b/servidor-em-aula/server.js @@ -1,6 +1,10 @@ const app = require("./src/app") const PORT = 8080 + +app.listen(PORT, () => { + app.listen(PORT, ()=>{ + console.log(`alo alo alo to ligando na ${PORT}`) }) \ No newline at end of file diff --git a/servidor-em-aula/src/controllers/postsController.js b/servidor-em-aula/src/controllers/postsController.js new file mode 100644 index 0000000..1d89959 --- /dev/null +++ b/servidor-em-aula/src/controllers/postsController.js @@ -0,0 +1,107 @@ +const postsJson = require("../models/posts.json") + +const getAll = (request, response) => { + response.status(200).json(postsJson) +} + +const getById = (request, response) => { + const idRequerido = request.params.id + const postFiltrado = postsJson.find(post => post.id == idRequerido) + + response.status(200).send(postFiltrado) +} + +const creatPost = (request, response) => { + let tituloRequerido = request.body.titulo + let conteudoRequerido = request.body.conteudo + let etiquetasRequeridas = request.body.etiquetas + + let newPost = { + id: Math.random().toString(32).substr(2, 6), + dataCriacao: new Date(), + titulo: tituloRequerido, + conteudo: conteudoRequerido, + etiquetas: etiquetasRequeridas + } + + postsJson.push(newPost) + + response.status(201).json([{ + "mensagem": "Post criado", + newPost + }]) +} + +const replacePost = (request, response) => { + const idRequerido = request.params.id + let postBody = request.body + const postFiltrado = postsJson.find(post => post.id == idRequerido) + + let postAtualizado = { + id: postFiltrado.id, + dataCriacao: postFiltrado.dataCriacao, + titulo: postBody.titulo, + conteudo: postBody.conteudo, + etiquetas: postBody.etiquetas + } + const indice = postsJson.indexOf(postFiltrado) + postsJson.splice(indice, 1, postAtualizado) + + response.status(200).json([{ + "mensagem": "Postsubstituido com sucesso", + postAtualizado + }]) +} + +const updateTitle = (request, response) => { + const idRequerido = request.params.id + let newTitle = request.body.titulo + const postFiltrado = postsJson.find(post => post.id == idRequerido) + + postFiltrado.titulo = newTitle + + response.status(200).json([{ + "mensagem": "titulo atualizado com sucesso", + postFiltrado + }]) +} + +const updateAnything = (request, response) => { + const idRequerido = request.params.id + const atualizacaoBody = request.body + const postFiltrado = postsJson.find(post => post.id == idRequerido) + + let listaDeChaves = Object.keys(atualizacaoBody) + + listaDeChaves.forEach((chave) => { + postFiltrado[chave] = atualizacaoBody[chave] + }) + + response.status(200).json([{ + "mensagem": "Post atualização com sucesso", + postFiltrado + }]) +} + + +const deletePost = (request, response) => { + const idRequerido = request.params.id + const postFiltrado = postsJson.find(post => post.id == idRequerido) + + const indice = postsJson.indexOf(postFiltrado) + postsJson.splice(indice, 1) + + response.status(200).json({ + "mensagem": "Post deletado", + postsJson + }) +} +module.exports = { + getAll, + getById, + creatPost, + replacePost, + updateTitle, + updateAnything, + deletePost +} \ No newline at end of file diff --git a/servidor-em-aula/src/models/posts.json b/servidor-em-aula/src/models/posts.json index 9fc5749..c117920 100644 --- a/servidor-em-aula/src/models/posts.json +++ b/servidor-em-aula/src/models/posts.json @@ -5,22 +5,22 @@ "dataCriacao": "18/10/2020", "titulo": "Dicas importantes para quem quer migrar de carreira", "conteudo": "Muitas dúvidas pairam na cabeça de quem desejar migrar de área, o medo de estar arriscando sua carreira pra tentar algo pode paralisar nossos projetos...", - "etiquetas": ["migracao","carreira","vidaProfissional","empowerment", "tecnologia", "codingGirls"] + "etiquetas": ["migracao", "carreira", "vidaProfissional", "empowerment", "tecnologia", "codingGirls"] }, { "id": 2, - "dataCriacao":"18/5/2020", + "dataCriacao": "18/5/2020", "titulo": "Entenda por que Javascript e Java não são a mesma coisa", "conteudo": "Ainda que tenham nomes parecidos, Javascript e Java são linguagens diferentes: a primeira atua no FrontEnd e a segunda no BackEnd...", - "etiquetas": ["nivelIniciante","frontEnd","backEnd","java", "javascript"] + "etiquetas": ["nivelIniciante", "frontEnd", "backEnd", "java", "javascript"] }, { "id": 3, - "dataCriacao":"18/2/2021", + "dataCriacao": "18/2/2021", "titulo": "Qual biblioteca de Javascript escolher: React, Angular, Vue ou JQuery?", "conteudo": "Assim que começamos a estudar FrontEnd, descobrimos o mundo de possibilidades do Javascript e de seus frameworks. A parte mais difícil é escolher em qual(ou quais) dela(s) se aprofundar...", - "etiquetas": ["javascript","biblioteca","frameworks", "angular", "react", "vue", "jQuery", "frontEnd"] + "etiquetas": ["javascript", "biblioteca", "frameworks", "angular", "react", "vue", "jQuery", "frontEnd"] } ] \ No newline at end of file diff --git a/servidor-em-aula/src/routes/postsRoutes.js b/servidor-em-aula/src/routes/postsRoutes.js index fae32ff..689d760 100644 --- a/servidor-em-aula/src/routes/postsRoutes.js +++ b/servidor-em-aula/src/routes/postsRoutes.js @@ -1,13 +1,23 @@ +const express = require("express") +const router = express.Router() + +const controller = require("../controllers/postsController") + const express = require ("express") const router = express.Router() const controller = require("../controllers/postsControllers") + router.get("/", controller.getAll) router.get("/:id", controller.getById) + +router.post("/create", controller.creatPost) + router.post("/create", controller.createPost) + router.put("/:id", controller.replacePost) router.patch("/updateTitle/:id", controller.updateTitle) @@ -16,4 +26,8 @@ router.patch("/update/:id", controller.updateAnything) router.delete("/:id", controller.deletePost) -module.exports = router; \ No newline at end of file +module.exports = router; + + +module.exports = router; + diff --git a/servidor-paraolar/reprogramaflix/package-lock.json b/servidor-paraolar/reprogramaflix/package-lock.json index aa51754..35cbaf4 100644 --- a/servidor-paraolar/reprogramaflix/package-lock.json +++ b/servidor-paraolar/reprogramaflix/package-lock.json @@ -287,6 +287,15 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -791,6 +800,11 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", diff --git a/servidor-paraolar/reprogramaflix/package.json b/servidor-paraolar/reprogramaflix/package.json index 2c1200a..20fe98b 100644 --- a/servidor-paraolar/reprogramaflix/package.json +++ b/servidor-paraolar/reprogramaflix/package.json @@ -1,7 +1,6 @@ { "name": "reprogramaflix", "version": "1.0.0", - "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", @@ -11,7 +10,9 @@ "author": "", "license": "ISC", "dependencies": { + "cors": "^2.8.5", "express": "^4.17.1", "nodemon": "^2.0.7" - } + }, + "description": "" } diff --git a/servidor-paraolar/reprogramaflix/server.js b/servidor-paraolar/reprogramaflix/server.js index ae1f313..102439d 100644 --- a/servidor-paraolar/reprogramaflix/server.js +++ b/servidor-paraolar/reprogramaflix/server.js @@ -1,5 +1,7 @@ const app = require("./src/app") +const PORT = 8080 -app.listen(8080, ()=>{ - console.log("Uhuuul nova iguaçu na porta 8080") + +app.listen(8080, () => { + console.log(`Uhuuul nova iguaçu na porta ${PORT}`) }) \ No newline at end of file diff --git a/servidor-paraolar/reprogramaflix/src/app.js b/servidor-paraolar/reprogramaflix/src/app.js index 846d237..7ff802c 100644 --- a/servidor-paraolar/reprogramaflix/src/app.js +++ b/servidor-paraolar/reprogramaflix/src/app.js @@ -1,7 +1,11 @@ const express = require("express") //chama o express +const cors = require("cors") +const filmes = require("./routes/filmesRoutes") //chamando todas as rotas + const app = express() //executar express -const filmes = require("./routes/filmesRoutes") //chamando todas as rotas +app.use(cors()) +app.use(express.json()) app.use("/filmes", filmes) //colocando a rota raiz diff --git a/servidor-paraolar/reprogramaflix/src/controllers/filmesController.js b/servidor-paraolar/reprogramaflix/src/controllers/filmesController.js index 87c1be3..3bd6935 100644 --- a/servidor-paraolar/reprogramaflix/src/controllers/filmesController.js +++ b/servidor-paraolar/reprogramaflix/src/controllers/filmesController.js @@ -1,44 +1,44 @@ const filmes = require("../models/filmes.json") //chamar nosso json -const getAll = (request, response)=>{ //criar função getAll +const getAll = (request, response) => { //criar função getAll response.status(200).send(filmes) } -const getById = (request, response)=>{ +const getById = (request, response) => { const idRequerido = request.params.id let idFiltrado = filmes.find(filme => filme.id == idRequerido) - if(idFiltrado == undefined || idRequerido == " "){ + if (idFiltrado == undefined || idRequerido == " ") { response.status(404).json([{ - "mensagem":"id não existente" + "mensagem": "id não existente" }]) - }else{ - response.status(200).json(idFiltrado) - } + } else { + response.status(200).json(idFiltrado) + } } -const getByTitle = (request, response)=>{ +const getByTitle = (request, response) => { const titulo = request.query.titulo.toLowerCase() const filmeFiltrado = filmes.find(filme => filme.Title.toLowerCase().includes(titulo)) - if(titulo == "" || filmeFiltrado == undefined){ + if (titulo == "" || filmeFiltrado == undefined) { response.status(400).json([{ - "mensagem":"por favor, digite um titulo válido" + "mensagem": "por favor, digite um titulo válido" }]) } else { response.status(200).send(filmeFiltrado) } } -const getByGenre = (request, response)=>{ +const getByGenre = (request, response) => { const generoRequisitado = request.query.genero - let novaLista =[] - - filmes.forEach(filme =>{ - let generoLista = filme.Genre.split(",") - - for(genero of generoLista){ - - if(genero.includes(generoRequisitado)){ + let novaLista = [] + + filmes.forEach(filme => { + let generoLista = filme.Genre.split(",") + + for (genero of generoLista) { + + if (genero.includes(generoRequisitado)) { console.log(filme) novaLista.push(filme) } @@ -48,9 +48,131 @@ const getByGenre = (request, response)=>{ response.status(200).send(novaLista) } +const creatFilmes = (request, response) => { + let titleRequerido = request.body.Title + let yearRequerido = request.body.Year + let ratedRequerido = request.body.Rated + let releasedRequerido = request.body.Released + let runtimeRequerido = request.body.Runtime + let genreRequerido = request.body.Genre + let directorRequerido = request.body.Director + let writerRequerido = request.body.Writer + let actorsRequerido = request.body.Actors + let plotRequerido = request.body.Plot + let languageRequerido = request.body.Language + let countryRequerido = request.body.Country + let awardsRequerido = request.body.Awards + + let newFilms = { + id: Math.random().toString(32).substr(2, 6), + Title: titleRequerido, + Year: yearRequerido, + Rated: ratedRequerido, + Released: releasedRequerido, + Runtime: runtimeRequerido, + Genre: genreRequerido, + Director: directorRequerido, + Writer: writerRequerido, + Actors: actorsRequerido, + Plot: plotRequerido, + Language: languageRequerido, + Country: countryRequerido, + Awards: awardsRequerido + } + + filmes.push(newFilms) + + response.status(201).json([{ + "mensagem": "Filme criado", + newFilms + }]) +} + +const replaceFilme = (request, response) => { + const idRequerido = request.params.id + let filmeBody = request.body + const filmeFiltrado = filmes.find(filme => filme.id == idRequerido) + + let filmeAtualizado = { + id: filmeFiltrado.id, + Title: filmeBody.Title, + Year: filmeBody.Year, + Rated: filmeBody.Rated, + Released: filmeBody.Released, + Runtime: filmeBody.Runtime, + Genre: filmeBody.Genre, + Director: filmeBody.Director, + Writer: filmeBody.Writer, + Actors: filmeBody.Actors, + Plot: filmeBody.Plot, + Language: filmeBody.Language, + Country: filmeBody.Country, + Awards: filmeBody.Awards + } + + const indice = filmes.indexOf(filmeFiltrado) + filmes.splice(indice, 1, filmeAtualizado) + + response.status(200).json([{ + "mensagem": "Filme substituído com sucesso", + filmeAtualizado + }]) +} + +const updateTitle = (request, response) => { + const idRequerido = request.params.id + let newTitle = request.body.titulo + const filmeFiltrado = filmes.find(filme => filme.id == idRequerido) + + filmeFiltrado.titulo = newTitle + + response.status(200).json([{ + "mensagem": "titulo atualizado", + filmeFiltrado + }]) +} + +const updateAnything = (request, response) => { + const idRequerido = request.params.id + const atualizarBody = request.body + const filmeFiltrado = filmes.find(filme => filme.id == idRequerido) + + let listaChaves = Object.keys(atualizarBody) + + listaChaves.forEach((chave) => { + filmeFiltrado[chave] = atualizarBody[chave] + }) + + response.status(200).json([{ + "mensagem": "Filme atualizado com sucesso", + filmeFiltrado + }]) +} + +const deleteFilme = (request, response) => { + const idRequerido = request.params.id + const filmeFiltrado = filmes.find(filme => filme.id == idRequerido) + + const indice = filmes.indexOf(filmeFiltrado) + filmes.splice(indice, 1) + + response.status(200).json([{ + "mensagem": "Filme deletado", + filmes + }]) +} + + + + module.exports = { //exportando as funções getAll, getById, getByTitle, - getByGenre + getByGenre, + creatFilmes, + replaceFilme, + updateTitle, + updateAnything, + deleteFilme } \ No newline at end of file diff --git a/servidor-paraolar/reprogramaflix/src/routes/filmesRoutes.js b/servidor-paraolar/reprogramaflix/src/routes/filmesRoutes.js index 7f56a6e..e1bd7c3 100644 --- a/servidor-paraolar/reprogramaflix/src/routes/filmesRoutes.js +++ b/servidor-paraolar/reprogramaflix/src/routes/filmesRoutes.js @@ -1,12 +1,20 @@ -const controller = require("../controllers/filmesController")//chama o controler +const controller = require("../controllers/filmesController") //chama o controler -const express = require("express")//chamando o express -const router = express.Router()//executando Router +const express = require("express") //chamando o express +const router = express.Router() //executando Router -router.get("/todos", controller.getAll)//configurando continuação da rota e dizendo q ela vai usar a função getAll que esta no controller +router.get("/todos", controller.getAll) //configurando continuação da rota e dizendo q ela vai usar a função getAll que esta no controller router.get("/title", controller.getByTitle) router.get("/genre", controller.getByGenre) router.get("/:id", controller.getById) +router.post("/create", controller.creatFilmes) + +router.put("/:id", controller.replaceFilme) + +router.patch("/updateTitle/:id", controller.updateTitle) +router.patch("/update/:id", controller.updateAnything) + +router.delete("/:id", controller.deleteFilme) module.exports = router //exportando o router \ No newline at end of file diff --git a/servidor-paraolar/to-do-server/src/controllers/toDoController.js b/servidor-paraolar/to-do-server/src/controllers/toDoController.js index b67d183..266c4f3 100644 --- a/servidor-paraolar/to-do-server/src/controllers/toDoController.js +++ b/servidor-paraolar/to-do-server/src/controllers/toDoController.js @@ -1,25 +1,25 @@ const tarefasJson = require("../models/tarefas.json") const fs = require("fs") -const getAll = (request, response)=>{ +const getAll = (request, response) => { response.status(200).send(tarefasJson) } -const getById = (request, response) =>{ +const getById = (request, response) => { const idRequirido = request.params.id const tarefaFiltrada = tarefasJson.find(tarefa => tarefa.id == idRequirido) response.status(200).send(tarefaFiltrada) } -const createTask = (request, response) =>{ +const createTask = (request, response) => { const descricaoRequirida = request.body.descricao const nomeColaboradorRequirido = request.body.nomeColaborador - - const novaTarefa ={ - id: Math.random().toString(32).substr(2,9), + + const novaTarefa = { + id: Math.random().toString(32).substr(2, 9), dataInclusao: new Date(), concluido: false, descricao: descricaoRequirida, @@ -38,7 +38,7 @@ const createTask = (request, response) =>{ } -const deleteTask = (request, response)=>{ +const deleteTask = (request, response) => { const idRequirido = request.params.id const tarefaFiltrada = tarefasJson.find(tarefa => tarefa.id == idRequirido) @@ -55,13 +55,68 @@ const deleteTask = (request, response)=>{ "mensagem": "Tarefa deletada com sucesso", tarefasJson }]) +} + +const replaceTask = (request, response) => { + const idRequerido = request.params.id + let tarefaBody = request.body + const tarefaFiltrada = tarefasJson.find(tarefa => tarefa.id == idRequerido) + + let tarefaAtualizada = { + id: tarefaFiltrada.id, + dataInclusao: tarefaFiltrada.dataInclusao, + concluido: tarefaBody.concluido, + descricao: tarefaBody.descricao, + nomeColaborador: tarefaBody.nomeColaborador + } + + const indice = tarefasJson.indexOf(tarefaFiltrado) + tarefaJson.splice(indice, 1, tarefaAtualizada) + + response.status(200).json([{ + "mensagem": "Tarefa substituida com sucesso", + tarefaAtualizada + }]) + +} + +const updateTask = (request, response) => { + const idRequerido = request.params.id + let newDescricao = request.body.descricao + const descricaoFiltrado = tarefaJson.find(tarefa => tarefa.id == idRequerido) + descricaoFiltrado.descricao = newDescricao + + response.status(200).json([{ + "mensagem": "Descricao atualizada com sucesso", + descricaoFiltrado + }]) +} + +const updateAnything = (request, response) => { + const idRequerido = request.params.id + const atualizacaoBody = request.body + const tarefaFiltrado = tarefasJson.find(tarefa => tarefa.id == idRequerido) + + let listaDeChaves = Object.keys(atualizacaoBody) + + listaDeChaves.forEach((chave) => { + tarefasFiltrado[chave] = atualizacaoBody[chave] + }) + + response.status(200).json([{ + "mensagem": "Tarefa atualizada com sucesso", + tarefaFiltrado + }]) } -module.exports ={ +module.exports = { getAll, getById, createTask, + replaceTask, + updateTask, + updateAnything, deleteTask } \ No newline at end of file diff --git a/servidor-paraolar/to-do-server/src/routes/toDoRoutes.js b/servidor-paraolar/to-do-server/src/routes/toDoRoutes.js index b2f4aba..4a594e9 100644 --- a/servidor-paraolar/to-do-server/src/routes/toDoRoutes.js +++ b/servidor-paraolar/to-do-server/src/routes/toDoRoutes.js @@ -7,6 +7,11 @@ router.get("/:id", controller.getById) router.post("/cadastrar", controller.createTask) +router.put("/:id", controller.replaceTask) + +router.patch("/updateTitle/:id", controller.updateTask) +router.patch("/update/:id", controller.updateAnything) + router.delete("/:id", controller.deleteTask) module.exports = router \ No newline at end of file