Skip to content

Commit 106eb63

Browse files
committed
CRUD library, user, book
1 parent 63b5b19 commit 106eb63

File tree

10 files changed

+306
-10
lines changed

10 files changed

+306
-10
lines changed

controllers/books.controller.js

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,65 @@ const Book = require("../models/book.model");
33
async function getAllBooks(req, res, next) {
44
try {
55
const books = await Book.find({});
6-
res.json({ data: books });
6+
res.json({data: books});
77
} catch (e) {
88
next(e);
99
}
1010
}
1111

1212
async function createBook(req, res, next) {
1313
try {
14-
const {title, description} = req.body;
15-
const result = await Book.create({
16-
title, description
17-
});
14+
const {...rest} = req.body;
15+
const result = await Book.create(rest);
1816

19-
res.json({ success: true, data: result });
17+
res.json({success: true, data: result});
2018
} catch (e) {
2119
next(e);
2220
}
23-
};
21+
}
22+
23+
async function deleteBook(req, res, next) {
24+
try {
25+
const {book_id: bookID} = req.params;
26+
27+
const result = await Book.deleteOne({_id: bookID})
28+
29+
res.json({success: true, data: result});
30+
} catch (e) {
31+
next(e);
32+
}
33+
}
34+
35+
async function updateBook(req, res, next) {
36+
try {
37+
const {book_id: bookID} = req.params;
38+
const {...rest} = req.body;
39+
40+
const result = await Book.updateOne({_id: bookID}, {
41+
...rest
42+
})
43+
44+
res.json({success: true, data: result});
45+
} catch (e) {
46+
next(e);
47+
}
48+
}
49+
async function getBookById(req, res, next) {
50+
try {
51+
const {book_id: bookID} = req.params;
52+
53+
const result = await Book.findOne({_id: bookID});
54+
55+
res.json({success: true, data: result});
56+
} catch (e) {
57+
next(e);
58+
}
59+
}
2460

2561
module.exports = {
2662
getAllBooks,
27-
createBook
63+
createBook,
64+
deleteBook,
65+
updateBook,
66+
getBookById,
2867
}

controllers/library.controller.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
const Library = require("../models/library.model");
2+
3+
async function getAllLibraries(req, res, next) {
4+
try {
5+
const libraries = await Library.find({});
6+
res.json({data: libraries});
7+
} catch (e) {
8+
next(e);
9+
}
10+
}
11+
12+
async function createLibrary(req, res, next) {
13+
try {
14+
const {...rest} = req.body;
15+
const result = await Library.create(rest);
16+
17+
res.json({success: true, data: result});
18+
} catch (e) {
19+
next(e);
20+
}
21+
}
22+
23+
async function deleteLibrary(req, res, next) {
24+
try {
25+
const {lib_id} = req.params;
26+
27+
const result = await Library.deleteOne({_id: lib_id})
28+
29+
res.json({success: true, data: result});
30+
} catch (e) {
31+
next(e);
32+
}
33+
}
34+
35+
async function updateLibrary(req, res, next) {
36+
try {
37+
const {lib_id} = req.params;
38+
const {...rest} = req.body;
39+
40+
const result = await Library.updateOne({_id: lib_id}, {
41+
...rest
42+
})
43+
44+
res.json({success: true, data: result});
45+
} catch (e) {
46+
next(e);
47+
}
48+
}
49+
50+
async function getLibraryById(req, res, next) {
51+
try {
52+
const {lib_id} = req.params;
53+
54+
const result = await Library.findOne({_id: lib_id});
55+
56+
res.json({success: true, data: result});
57+
} catch (e) {
58+
next(e);
59+
}
60+
}
61+
62+
module.exports = {
63+
getAllLibraries,
64+
createLibrary,
65+
deleteLibrary,
66+
updateLibrary,
67+
getLibraryById,
68+
}

controllers/users.controller.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
const User = require("../models/user.model");
2+
3+
async function getAllUsers(req, res, next) {
4+
try {
5+
const users = await User.find({});
6+
res.json({data: users});
7+
} catch (e) {
8+
next(e);
9+
}
10+
}
11+
12+
async function createUser(req, res, next) {
13+
try {
14+
const {...rest} = req.body;
15+
const result = await User.create(rest);
16+
17+
res.json({success: true, data: result});
18+
} catch (e) {
19+
next(e);
20+
}
21+
}
22+
23+
async function deleteUser(req, res, next) {
24+
try {
25+
const {user_id} = req.params;
26+
27+
const result = await User.deleteOne({_id: user_id})
28+
29+
res.json({success: true, data: result});
30+
} catch (e) {
31+
next(e);
32+
}
33+
}
34+
35+
async function updateUser(req, res, next) {
36+
try {
37+
const {user_id} = req.params;
38+
const {...rest} = req.body;
39+
40+
const result = await User.updateOne({_id: user_id}, {
41+
...rest
42+
})
43+
44+
res.json({success: true, data: result});
45+
} catch (e) {
46+
next(e);
47+
}
48+
}
49+
async function getUserById(req, res, next) {
50+
try {
51+
const {user_id} = req.params;
52+
53+
const result = await User.findOne({_id: user_id});
54+
55+
res.json({success: true, data: result});
56+
} catch (e) {
57+
next(e);
58+
}
59+
}
60+
61+
module.exports = {
62+
getAllUsers,
63+
createUser,
64+
deleteUser,
65+
updateUser,
66+
getUserById,
67+
}

index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ const cors = require("cors");
77
const favicon = require("serve-favicon");
88
require("dotenv").config();
99

10-
const booksRouter = require("./routers/books.router")
10+
const booksRouter = require("./routers/books.router");
11+
const usersRouter = require("./routers/user.router");
12+
const libraryRouter = require("./routers/library.router");
1113

1214
const MONGODB_URI = process.env.NODE_ENV ? 'mongodb://127.0.0.1:27017' : process.env.MONGODB_URI;
1315

@@ -36,6 +38,8 @@ app.use(favicon(path.join(__dirname, "public", "images", "favicon.ico")));
3638
app.use(express.json());
3739

3840
app.use("/api/v1/books", booksRouter);
41+
app.use("/api/v1/users", usersRouter);
42+
app.use("/api/v1/libraries", libraryRouter);
3943

4044
app.all("*", (req, res, next) => {
4145
const error = new Error("No route found");

models/book.model.js

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,47 @@ const mongoose = require("mongoose");
22

33
const bookSchema = new mongoose.Schema(
44
{
5+
ISBN: {
6+
type: String,
7+
required: true,
8+
},
9+
libraryID: {
10+
type: String,
11+
required: true,
12+
},
13+
borrower: {
14+
userId: {
15+
type: String,
16+
match: /.+\@.+\..+/,
17+
},
18+
borrowDate: {type: Date},
19+
returnDate: Date,
20+
fee: Number,
21+
},
22+
publisher: {
23+
companyName: String,
24+
authors: [
25+
{
26+
fullName: String
27+
}
28+
],
29+
address: String,
30+
phone: String,
31+
},
532
title: {type: String, required: true},
33+
subject: {type: String, default: ''},
634
description: String,
35+
created: {
36+
type: Date,
37+
default: Date.now
38+
},
39+
updated: {
40+
type: Date,
41+
default: Date.now
42+
}
743
}
844
);
945

10-
const bookModel = mongoose.model("book", bookSchema);
46+
const bookModel = mongoose.model("Books", bookSchema);
1147

1248
module.exports = bookModel;

models/library.model.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const mongoose = require("mongoose");
2+
3+
const librarySchema = new mongoose.Schema(
4+
{
5+
libraryID: {
6+
type: String,
7+
unique: true,
8+
required: true,
9+
},
10+
address: {type: String, required: true},
11+
name: {type: String, required: true},
12+
created: {
13+
type: Date,
14+
default: Date.now
15+
},
16+
updated: {
17+
type: Date,
18+
default: Date.now
19+
}
20+
}
21+
);
22+
23+
const libraryModel = mongoose.model("Libraries", librarySchema);
24+
25+
module.exports = libraryModel;

models/user.model.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const mongoose = require("mongoose");
2+
3+
const userSchema = mongoose.Schema({
4+
phone: String,
5+
email: {
6+
type: String,
7+
required: true,
8+
match: /.+\@.+\..+/,
9+
unique: true,
10+
},
11+
firstName: String,
12+
lastName: String,
13+
address: String,
14+
title: String,
15+
});
16+
17+
module.exports = mongoose.model("Users", userSchema);

routers/books.router.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@ const router = express.Router({ mergeParams: true });
33
const {
44
getAllBooks,
55
createBook,
6+
deleteBook,
7+
updateBook,
8+
getBookById,
69
} = require("../controllers/books.controller");
710

811
router.get('/', getAllBooks);
912
router.post('/', createBook);
13+
router.delete('/:book_id', deleteBook);
14+
router.put('/:book_id', updateBook);
15+
router.get('/:book_id', getBookById);
1016

1117
module.exports = router;

routers/library.router.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const express = require("express");
2+
const router = express.Router({ mergeParams: true });
3+
const {
4+
getAllLibraries,
5+
createLibrary,
6+
deleteLibrary,
7+
updateLibrary,
8+
getLibraryById,
9+
} = require("../controllers/library.controller");
10+
11+
router.get('/', getAllLibraries);
12+
router.post('/', createLibrary);
13+
router.delete('/:lib_id', deleteLibrary);
14+
router.put('/:lib_id', updateLibrary);
15+
router.get('/:lib_id', getLibraryById);
16+
17+
module.exports = router;

routers/user.router.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const express = require("express");
2+
const router = express.Router({ mergeParams: true });
3+
const {
4+
getAllUsers,
5+
createUser,
6+
deleteUser,
7+
updateUser,
8+
getUserById,
9+
} = require("../controllers/users.controller");
10+
11+
router.get('/', getAllUsers);
12+
router.post('/', createUser);
13+
router.delete('/:user_id', deleteUser);
14+
router.put('/:user_id', updateUser);
15+
router.get('/:user_id', getUserById);
16+
17+
module.exports = router;

0 commit comments

Comments
 (0)