Skip to content
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 BackEnd/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
1,447 changes: 1,447 additions & 0 deletions BackEnd/package-lock.json

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions BackEnd/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "backend",
"version": "1.0.0",
"description": "Foton book list test backend",
"main": "index.js",
"scripts": {
"start": "nodemon server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Leonardo Silva",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"express": "^4.17.1",
"mongoose": "^6.0.4",
"nodemon": "^2.0.12"
}
}
29 changes: 29 additions & 0 deletions BackEnd/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const express = require('express')
const cookieParser = require('cookie-parser')
const cors = require('cors')
const mongoose = require('mongoose')

const routes = require('./src/routes')

const app = express()

mongoose.connect('mongodb://localhost:27017/FotonBookList', {
useUnifiedTopology: true,
useNewUrlParser: true
}, err => console.log(err ?? 'Mongo DB successfully connected!'))

app.use(cors({ origin: '*' }))
app.use(cookieParser())
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(routes)

app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', '*', 'Origin, X-Requested-With, Content-Type, Accept', 'application/json', 'text/json');

res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
next();
});

app.listen(4000, () => console.log('App listen'))
37 changes: 37 additions & 0 deletions BackEnd/src/controllers/BooksController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const Book = require('../models/Book')

module.exports = {
async getBooks(req, res) {
const books = await Book.find()
res.json(books)
},

async getBookById({ params: { _id } }, res) {
const book = await Book.findOne({ _id })
res.json(book)
},

async getBookByQuery({ params: { name } }, res) {
const regex = new RegExp(name, 'i');
return await Book.find({ name: regex }, (err, data) => {
data ? res.json(data) : console.log('err: ', err)
})
},

async createBook({ body: { name, author, description, image } }, res) {
const data = { name, author, description, image }
const book = await Book.create(data)
res.json(book)
},

async deleteBook({ params: { _id } }, res) {
const book = await Book.findByIdAndDelete({ _id })
res.json(book)
},

async updateBook({ body: { _id, name, author, description, image } }, res) {
const data = { name, author, description, image }
const book = await Book.findByIdAndUpdate({ _id }, data, { new: true })
res.json(book)
}
}
12 changes: 12 additions & 0 deletions BackEnd/src/models/Book.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const mongoose = require('mongoose')

const DataSchema = new mongoose.Schema({
name: String,
author: String,
image: String,
description: String,
})

const books = mongoose.model('Books', DataSchema)

module.exports = books
17 changes: 17 additions & 0 deletions BackEnd/src/routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const express = require('express')
const BooksController = require('./controllers/BooksController')

const routes = express.Router()

routes.get('/', (req, res) => {
res.json({ message: 'Backend is Working!' })
})

routes.get('/books', BooksController.getBooks)
routes.get('/books/:_id', BooksController.getBookById)
routes.get('/books/search/:name', BooksController.getBookByQuery)
routes.post('/books', BooksController.createBook)
routes.delete('/books/:_id', BooksController.deleteBook)
routes.put('/books', BooksController.updateBook)

module.exports = routes
10 changes: 10 additions & 0 deletions Database/books.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
__v,_id,author,description,image,name
0,613638ec3c682e7c2fa55c90,J.K. Rowling,"Você está compartilhando os pensamentos e emoções do Lorde das Trevas. O diretor acha que é desaconselhável que isto continue a acontecer. E quer que eu lhe ensine como fechar a mente ao Lorde das Trevas.' Tempos sombrios se abateram sobre Hogwarts. Depois do ataque dos Dementadores ao seu primo Dudley, Harry Potter sabe que Voldemort fará tudo para encontrá-lo. Muitos negam o retorno do Lorde das Trevas, mas Harry não está sozinho: uma ordem secreta se reúne no Largo Grimmauld para fazer frente às forças sombrias. Harry precisa permitir que o professor Snape o ensine a se proteger dos vorazes ataques de Voldemort à sua mente. Mas eles estão ficando cada vez mais fortes, e o tempo de Harry está acabando...",http://books.google.com/books/content?id=9TcQCwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Harry Potter e a Ordem da Fênix
0,61363a061acc8acc6f671d66,Nir Eyal,"Revised and Updated, Featuring a New Case Study How do successful companies create products people can’t put down? Why do some products capture widespread attention while others flop? What makes us engage with certain products out of sheer habit? Is there a pattern underlying how technologies hook us? Nir Eyal answers these questions (and many more) by explaining the Hook Model—a four-step process embedded into the products of many successful companies to subtly encourage customer behavior. Through consecutive “hook cycles,” these products reach their ultimate goal of bringing users back again and again without depending on costly advertising or aggressive messaging. Hooked is based on Eyal’s years of research, consulting, and practical experience. He wrote the book he wished had been available to him as a start-up founder—not abstract theory, but a how-to guide for building better products. Hooked is written for product managers, designers, marketers, start-up founders, and anyone who seeks to understand how products influence our behavior. Eyal provides readers with: • Practical insights to create user habits that stick. • Actionable steps for building products people love. • Fascinating examples from the iPhone to Twitter, Pinterest to the Bible App, and many other habit-forming products.",http://books.google.com/books/content?id=dsz5AwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Hooked
0,613698e8b967e6ab2f2669c4,Friederich Nietzsche,"Friedrich Nietzsche foi filósofo, escritor, poeta, filólogo e músico e é considerado um dos mais influentes e importantes pensadores do século XIX. Em Nietzsche: Pensamentos, citações e afins, o leitor terá oportunidade conhecer o pensamento deste genial e controverso filósofo por meio de seus textos, nos mais diversos formatos. Além dos textos de Nietzsche, são apresentados artigos, biografia e um resumo de suas principais obras, com sugestão de ordem de leitura, de forma que o leitor possa se aprofundar paulatinamente na vasta obra deste grande pensador. Trata-se de uma grande porta de entrada ao fabuloso e desafiador universo de Friedrich Nietzsche.",http://books.google.com/books/content?id=WyThDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,"NIETZSCHE: Pensamentos, Citações e Afins"
0,613699c6b967e6ab2f2669c8,Friedrich Nietzsche,"Assim falava Zaratustra', o livro mais famoso e controverso de toda a obra nietzschiana, lança mão da figura semilendária do filósofo persa do século VI a.C. para desenvolver, em uma combinação de elementos narrativos, conceituais e líricos, os quatro grandes temas que formam o pensamento de Nietzsche: o super-homem, a ""morte"" de Deus, a vontade de poder e o eterno retorno. Tradutor: José Mendes de Souza Apêndices: Geir Campos Prefácio Apêndices I e II de Elisabeth Forster Nietzsche.",http://books.google.com/books/content?id=SSOpDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Assim Falava Zaratustra
0,61369a64b967e6ab2f2669cb,João Guimarães Rosa,"Nova edição do clássico do século XX adaptado para os quadrinhos chega pela Globo Livros Graphic. Com roteiro do ilustrador, artista plástico e diretor de cinema Eloar Guazzelli e arte de Rodrigo Rosa, o livro, que venceu o troféu HQ Mix 2015 de melhor adaptação para os quadrinhos, respeita o texto original de Guimarães Rosa, preservando a linguagem do autor mineiro, traço que o distingue como um dos maiores escritores brasileiros.",http://books.google.com/books/content?id=3MaCDQAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Grande Sertão: Veredas
0,61369abdb967e6ab2f2669ce,Aleister Crowley,"""Faze o que tu queres, há de ser o todo da Lei"". Esta frase, que é a base da Mágicka de Aleister Crowley, está n'O Livro da Lei. Escrito no Cairo, em abril de 1904, O Livro da Lei é a fonte e a chave para o pensamento do mais famoso mago do século XX. Sua influência se espalha por todo o ocultismo ocidental, do neopaganismo wicca à popularização de práticas espirituais como a yoga. Mas, além disso, espalha-se com muita força por toda a cultura popular ocidental. Crowley está na capa do disco Sgt. Pepper's Lonely Hearts Club Band, dos Beatles, mas também é citado por artistas das mais diversas áreas, dos mais diversos gêneros. De Led Zeppelin, David Bowie, Jay Z e Raul Seixas a Fernando Pessoa, William S. Burroughs, Alan Moore e Neil Gaiman. ""A influência de Crowley na cultura moderna é tão disseminada quanto a de Freud ou Jung"", diz o jornal inglês The Guardian. Esta edição bilíngue traz os comentários do autor e a reprodução dos manuscritos originais. Inclui ainda a tradução feita por Fernando Pessoa do poema de Crowley ""Hino a Pan"", acompanhado de um texto do escritor português David Soares, estudioso da relação do poeta com o mago inglês.",http://books.google.com/books/content?id=r2UhEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,O livro da lei
0,61369af9b967e6ab2f2669d1,Tres Iniciados,"O Caibalion é um conjunto de princípios herméticos atribuído ao lendário sábio egípcio Hermes Trismegisto, atribuído a três iniciados, provável pseudônimo de William Atkinson. De acordo com o livro, eles foram passados de geração para geração secretamente e publicados no século XX.",http://books.google.com/books/content?id=kE5gyAEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api,O Caibalion
0,61369b73b967e6ab2f2669d4,Machado de Assis,"Joaquim Maria Machado de Assis (Rio de Janeiro, 21 de junho de 1839 — Rio de Janeiro, 29 de setembro de 1908) foi um escritor brasileiro, considerado por muitos críticos, estudiosos, escritores e leitores um dos maiores senão o maior nome da literatura do Brasil. Obras Romances Ressurreição, (1872) A mão e a luva, (1874) Helena, (1876) Iaiá Garcia, (1878) Memórias Póstumas de Brás Cubas, (1881) Casa Velha, (1885) Quincas Borba, (1891) Dom Casmurro, (1899) Esaú e Jacó, (1904) Memorial de Aires, (1908) Coletânea de contos Contos Fluminenses, (1870) Histórias da Meia-Noite, (1873) Papéis Avulsos, (1882) Histórias sem Data, (1884) Várias Histórias, (1896) Páginas Recolhidas, (1899) Relíquias da Casa Velha, (1906).",http://books.google.com/books/content?id=A3bNDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Machado de Assis: Obras Completas
0,61369be0b967e6ab2f2669d7,David Hume,"David Hume discute na Investigação sobre o Entendimento Humano um problema filosófico fundamental: embora, em parte, remodelação do famoso Tratado da Natureza Humana, este ensaio aborda de modo autónomo e brilhante, e ainda provocador, a questão dos «limites do conhecimento» e o tema de uma ciência do homem enquanto base de todos os ramos do saber.",http://books.google.com/books/content?id=CWSTAAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api,Investigação Sobre o Entendimento Humano
Loading