import express from "express"; import cors from "cors"; import cookieParser from "cookie-parser"; import Categories from "./app/Categories.js"; import Books from "./app/Books.js"; import conn from "./app/Conn.js"; import User from "./app/User.js"; import crypto from 'crypto'; import BorrowedBooks from "./app/BorrowedBooks.js"; const app = express(); app.use(cors({ origin:"http://localhost:5173", credentials:true, methods: "GET,HEAD,PUT,PATCH,POST,DELETE" })); app.use(express.json()); app.use(cookieParser()); const c = new Categories(); const b = new Books(); const u = new User(); const bo = new BorrowedBooks(); //Kategória lekérése ID alapján //pl. http://localhost:3001/categories/15 app.get("/categories/:id" , async (req, res)=> { const response = await c.getCategory(req.params.id); res.status(response.status).send(response.messages); }); //Összes kategória lekérése //pl. http://localhost:3001/categories app.get("/categories", async (req, res)=> { const response = await c.getCategories(); res.status(response.status).send(response.messages); }); //Könyvek lekérése categoryID alapján //pl. http://localhost:3001/books/category/3 app.get("/books/category/:id", async (req, res)=> { const response = await b.getBooksCatID(req.params.id); res.status(response.status).send(response.messages); }); //Könyv lekérése ID alapján //pl. http://localhost:3001/books/18 app.get("/books/:id", async (req, res)=> { const response = await b.getBook(req.params.id); res.status(response.status).send(response.messages); }); //Összes könyv lekérése //pl. http://localhost:3001/books app.get("/books", async (req, res)=> { const response = await b.getBooks(); res.status(response.status).send(response.messages); }); //Könyv törlése ID alapján //pl. DELETE http://localhost:3001/books/60 TESZTELVE POSTMAN-NEL app.delete("/books/:id", async (req, res)=> { const response = await b.deleteBook(req.params.id, req.cookies.userID, req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //Könyv hozzáadása //pl. POST http://localhost:3001/books TESZTELVE POSTMAN-NEL CATEGORYID-T FRONTENDTŐL KAPJUK /* body-ba: { "author":"Jóósasdka", "title":"Egy asascím", "publisher":"Mitsaastomén", "the_year_of_publishing":1111, "description":"Blablablallvbllaslasla", "language":"magyar", "number_of_pages":666, "cover":"puha", "weight":280, "ISBN":1234567891234, "itemcode":780, "price":3334533, "discounted_price":22232, "book_url ":"", "categoryID":"3" } */ app.post("/books", async (req, res)=> { const response = await b.addBook(req.body, req.cookies.userID, req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //Könyv módosítása //pl. PUT http://localhost:3001/books/81 TESZTELVE POSTMAN-NEL /* body-ba: { "author":"MÓDOSÍTOTT", "title":"MÓDOSÍTOTT", "publisher":"MÓDOSÍTOTT", "the_year_of_publishing":1111, "description":"MÓDOSÍTOTTBlablablallvbllaslasla", "language":"magyar", "number_of_pages":666, "cover":"puha", "weight":280, "ISBN":1234567891234, "itemcode":780, "price":3334533, "discounted_price":22232, "book_url ":"" } */ app.put("/books/:id", async (req, res)=> { const books = req.body; books.bookID = req.params.id; const response = await b.updateBook(books, req.cookies.userID, req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //Könyv keresés név kezdőbetű alapján //pl. http://localhost:3001/books/search/p TESZTELVE POSTMAN-NEL app.get("/books/search/:char", async (req, res)=> { const response = await b.serchBooks(req.params.char); res.status(response.status).send(response.messages); }); app.post("/regisztracio", async(req, res)=> { //TESZTELVE try { const response = await u.register(req.body); res.status(response.status).json(response.messages); } catch(err) { res.status(err.status).json(err); } }); app.post("/belepes", async (req, res)=> { //TESZTELVE try { const response = await u.login(req.body, res); res.status(response.status).json(response.messages); } catch(err) { res.status(err.status).json(err); } }); //Jelszó módosítása ha létezik a user táblában az emailcím //pl. PUT http://localhost:3001/resetpass /*body-ba: { "email":"fek94688@ilebi.com", "pass":"alma" } */ app.put("/resetpass", async (req, res)=> { //POSTMAN-NEL TESZTELVE const response = await u.resetPass(req.body); res.status(response.status).json(response.messages); }) //Összes kölcsönzött könyv lekérése + INNER JOINNAL szerepel benne a könyv címe és a user neve is //pl. http://localhost:3001/admin/borrowedbooks //POSTMAN-NEL TESZTELVE app.get("/admin/borrowedbooks", async (req, res)=> { const response = await bo.getBorBooks(); res.status(response.status).send(response.messages); }); //userID alapján a kikölcsönzött könyvek megjelenításe - userID-hoz általában az admin fér hozzá, ezért úgy állítottam be hogy az isAdmin értéke 1 legyen //+ INNER JOINNAL szerepel benne a könyv címe és a user neve is //pl. http://localhost:3001/admin/borrows/user/1 //POSTMAN-NEL TESZTELVE app.get("/admin/borrows/user/:id", async (req, res)=> { const response = await bo.getBorrowsByUserID(req.params.id, req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //cartID alapján a kikölcsönzött könyvek megjelenításe - cartID-hoz általában az admin fér hozzá, ezért úgy állítottam be hogy az isAdmin értéke 1 legyen //+ INNER JOINNAL szerepel benne a könyv címe és a user neve is //pl. http://localhost:3001/admin/borrows/cart/17 //POSTMAN-NEL TESZTELVE app.get("/admin/borrows/cart/:id", async (req, res)=> { const response = await bo.getBorrowsByCartID(req.params.id, req.cookies.userID, req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //UserID alapján, csak a USER saját megrendeléseit látja!!!!(!!!!!!a UserID a cookies - ból jön így a belépett felhasználó csak a saját rendeléseit listáztathatja ki) a kikölcsönzött könyvek megjelenítése + INNER JOINNAL szerepel benne a könyv neve is nem csak a BookID; UserID a cookieból jön!!! //pl. http://localhost:3001/user/borrows //POSTMAN-NEL TESZTELVE app.get("/user/borrows", async (req, res)=> { const response = await bo.getBorrowsByUser(req.cookies.userID); res.status(response.status).send(response.messages); }) //Könykölcsönzés felvitele //pl.POST http://localhost:3001/borrows //POSTMAN-NEL TESZTELVE - KEZELI AZT IS HA KÉTSZER AKARJA KIVENNI A KÖNYVET ÉS MÉG NEM VITTE VISSZA /* body-ba: { "bookID":"3", "cartID":"17", //frontend oldaról jön ezért nem autoincrement "end_of_borrowment":"2024-12-21", "quantity":"1", "start_of_borrowment":"2024-12-18" } */ app.post("/borrows", async (req, res)=> { //userID a cookies-ból jön!!!!!! a belépett felhasználó tud csak kölcsönözni, cartID a megbeszéltek szerint a frontendről jön és nem autoincrement const borrowData = req.body.borrowbooks; console.log(borrowData[0]); borrowData.userID = req.cookies.userID; console.log(borrowData.userID); console.log(typeof(borrowData.userID)); const response = await bo.addBorrow(borrowData); res.clearCookie("userID"); res.clearCookie("isAdmin"); res.clearCookie("email"); res.status(response.status).send(response.messages); }); //Kölcsönzések módosítása (a megbeszéltek alapján a bringedBAck értékét 1-re módosítani) cartID alapján //pl. PUT http://localhost:3001/admin/borrows/cart/19 //POSTMAN-NEL TESZTELVE - Ha nem talál rendelésazonosító alapján hibát jelez /* body-ba: { "bringedBack":"1" " } */ app.put("/admin/borrows/cart/:id", async (req, res)=> { const order = req.body; order.cartID = req.params.id; const response = await bo.updateOrder(order,req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //Kölcsönzés törlése cartID alapján //pl. DELETE http://localhost:3001/admin/borrows/cart/19 //POSTMAN-NEL TESZTELVE - Ha nem talál rendelésazonosító alapján hibát jelez app.delete("/admin/borrows/cart/:id", async (req, res)=> { const response = await bo.deleteOrder( req.params.id, req.cookies.userID, req.cookies.isAdmin ); res.status(response.status).send(response.messages) }); //USER törlése a user táblából //pl. DELETE http://localhost:3001/admin/users/23 //POSTMAN-NEL TESZTELVE - Ha nem talál USERID alapján hibát jelez app.delete("/admin/users/:id", async (req, res)=> { const response = await u.deleteUser( req.params.id, req.cookies.userID, req.cookies.isAdmin ); res.status(response.status).send(response.messages) }); //Összes user lekérése adminként //pl. GET http://localhost:3001/admin/users //POSTMAN-NEL TESZTELVE - Jogosultságot ellenőriz! app.get("/admin/users", async (req, res)=> { const response = await u.getUsers(req.cookies.isAdmin); res.status(response.status).send(response.messages); }); //User keresés név kezdőbetű alapján //pl. http://localhost:3001/admin/users/search/p TESZTELVE POSTMAN-NEL app.get("/admin/users/search/:char", async (req, res)=> { const response = await u.searchUsers(req.params.char); res.status(response.status).send(response.messages); }); //User adatainak kilistázása cookies-ból //pl http://localhost:3001/user //FONTOS, HOGY BE LEGYEN JELENTKEZVE MERT SÜTIBŐL SZEDI A USERID-T - POSTMAN-NEL TESZTELVE app.get("/user", async (req, res)=> { const response = await u.getProfile(req.cookies.userID); res.status(response.status).send(response.messages); }) app.listen(3001, ()=>{console.log("Az alkalmazás a 3001-es porton fut! 😎")});