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,294 changes: 1,294 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

14 changes: 11 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@
"private": true,
"main": "src/index.js",
"scripts": {
"dev": "",
"start": ""
"dev": "nodemon src/index.js",
"start": "node src/index.js"
},
"author": ""
"author": "",
"dependencies": {
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.18.3",
"mongoose": "^8.2.1",
"nodemon": "^3.1.0"
}
}
4 changes: 4 additions & 0 deletions src/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_env = development,
port,
url = "127.0.0.1",
mongo_url = "mongodb://localhost:27017/mydb"
55 changes: 55 additions & 0 deletions src/controllers/booksControllers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
const Books = require("../models/bookModels")


const getAllBooks = (req, res) => {
Books.find({})
.then((books) => res.status(200).send(books))
.catch((err) => res.status(404).send(err.message))
.catch((err) => res.status(500).send(err.message))
}
const getBookById = (req, res) => {
const {book_id} = req.params
Books.findById(book_id)
.then((book) => {
if(!book){
res.status(404)
}else{
res.status(200)
}
})
.catch((err) => res.status(500).send(err.message))
}
const createBook = (req, res) => {
const book = req.body
Books.create(book)
.then((book) => res.status(201).send(book))
.catch((err) => res.status(404).send(err.message))
.catch((err) => res.status(500).send(err.message))
}
const updateBookByID = (req, res) => {
const book = req.body
const {book_id} = req.params
Books.findByIdAndUpdate(book_id, book)
.then((book) => {
if(!book){
res.status(404)
}else{
res.status(200)
}
})
.catch((err) => res.status(500).send(err.message))
}
const delBookById = (req, res) => {
const {book_id} = req.params
Books.findByIdAndDelete(book_id)
.then((book) => {
if(!book){
res.status(404).send("Пользователь ней найден")
}else{
res.status(200)
}
})
.catch((err) => res.status(500).send(err.message))
}

module.exports = {getAllBooks, createBook, getBookById, updateBookByID, delBookById}
59 changes: 59 additions & 0 deletions src/controllers/userControllers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
const User = require("../models/userModels")

const getUsers = (req, res) => {
User.find({})
.then((user) => {res.status(200).send(user)})
.catch((err)=> {
res.status(404).send(err.message)
res.status(500).send(err.message);
})
}
const addUsers = (req, res) => {
const data = req.body
User.create(data)
.then((user)=> {res.status(201).send(user)})
.catch((err)=> {
res.status(404).send(err.message)
res.status(500).send(err.message);
})
}
const delUser = (req, res) => {
const {user_id} = req.params
User.findByIdAndDelete(user_id)
.then((user)=> {
if (!user) {
res.status(404);
} else {
res.status(200).send(user);
}
})
.catch((err)=> res.status(500).send(err.message))
}
const getUser = (req, res) => {
const {user_id} = req.params
User.findById(user_id)
.then((user)=> {
if (!user) {
res.status(404);
} else {
res.status(200).send(user);
}
})
.catch((err)=> res.status(500).send(err.message))
}

const updateUser = (req, res) => {
const data = req.body
const {user_id} = req.params
User.findByIdAndUpdate(user_id, data)
.then((user)=> {
if (!user) {
res.status(404);
} else {
res.status(200).send(user);
}
})
.catch((err)=> res.status(500).send(err.message))
}

module.exports = {getUsers, addUsers, delUser, getUser, updateUser}
10 changes: 0 additions & 10 deletions src/data/users.json

This file was deleted.

32 changes: 23 additions & 9 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
const http = require('http');
const express = require("express");
const bodyParser = require("body-parser");
const dotenv = require("dotenv");
const mongoose = require("mongoose");
const cors = require("cors");
const app = express();
const userRouter = require("./routers/userRouter");
const bookRouter = require("./routers/bookRouter");

const server = http.createServer((request, response) => {
dotenv.config();
const {
port = 3005,
url = "127.0.0.1",
mongo_url = "mongodb://localhost:27017/mydb",
} = process.env;

// Написать обработчик запроса:
// - Ответом на запрос `?hello=<name>` должна быть **строка** "Hello, <name>.", код ответа 200
// - Если параметр `hello` указан, но не передано `<name>`, то ответ **строка** "Enter a name", код ответа 400
// - Ответом на запрос `?users` должен быть **JSON** с содержимым файла `data/users.json`, код ответа 200
// - Если никакие параметры не переданы, то ответ **строка** "Hello, World!", код ответа 200
// - Если переданы какие-либо другие параметры, то пустой ответ, код ответа 500
mongoose
.connect(mongo_url)
.then(() => console.log("Подключение к БД"))
.catch((err) => console.log(err.message));

});
app.use(cors());
app.use(bodyParser.json());
app.use(userRouter);
app.use(bookRouter);
app.listen(port, () => console.log(`Сервер запущен на ${url}:${port}`));
6 changes: 6 additions & 0 deletions src/middleware/loger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const logerUrl = (request, response, next) => {
console.log(`Запрос на адрес${request.originalUrl}`);
next()
}

module.exports = logerUrl;
20 changes: 20 additions & 0 deletions src/models/bookModels.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const mongoose = require("mongoose")

const booksShema = new mongoose.Schema({
title: {
type: String,
required: true,
minlength: 2
},
author: {
type: String,
required: true,
minlength: 2
},
year: {
type: Number,
required: true,
}
})

module.exports = mongoose.model("books", booksShema)
20 changes: 20 additions & 0 deletions src/models/userModels.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const mongoose = require("mongoose")

const userShema = new mongoose.Schema({
name: {
type: String,
required: true,
minlength: 2,
},
lastName: {
type: String,
required: true,
minlength: 2,
},
userName: {
type: String,
required: true,
minlength: 5,
}
})
module.exports = mongoose.model("user", userShema)
Empty file removed src/modules/users.js
Empty file.
14 changes: 14 additions & 0 deletions src/routers/bookRouter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const { getAllBooks, createBook, getBookById, updateBookByID, delBookById } = require("../controllers/booksControllers")
const router = require("express").Router()
const logerUrl = require("../middleware/loger")


router.use(logerUrl)

router.get("/books", getAllBooks)
router.get("/books/:book_id", getBookById)
router.post("/books", createBook)
router.patch("/books/:book_id", updateBookByID)
router.delete("/books/:book_id", delBookById)

module.exports = router;
14 changes: 14 additions & 0 deletions src/routers/userRouter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const router = require("express").Router()
const {getUsers, addUsers, delUser, getUser, updateUser} = require("../controllers/userControllers.js")
const logerUrl = require("../middleware/loger")


router.use(logerUrl)

router.get("/users", getUsers)
router.get("/users/:user_id", getUser)
router.post("/users", addUsers)
router.patch("/users/:user_id", updateUser)
router.delete("/users/:user_id", delUser)

module.exports = router