vizsgaremek/backend_konyvkolcsonzo_v5/app/Books.js

371 lines
11 KiB
JavaScript
Raw Normal View History

import CheckPermission from "./CheckPermission.js";
import conn from "./Conn.js";
class Books {
checkErrors(book) {
const errors = [];
if(book.author.length === 0
|| book.author === undefined
|| book.author === null){
console.log(typeof(book));
errors.push("A szerzőt kötelező beállítani!");
}
if(book.title.length === 0
|| book.title === undefined
|| book.title === null)
errors.push("A könyv címét kötelező megadni!");
if(book.publisher.length === 0
|| book.publisher === undefined
|| book.title === null)
errors.push("A könyv kiadóját kötelező megadni!");
if(book.the_year_of_publishing === 0
|| book.the_year_of_publishing === undefined
|| book.the_year_of_publishing === null)
errors.push("A könyv kiadásának évét kötelező megadni!");
if(book.description.length === 0
|| book.description === undefined
|| book.description === null)
errors.push("A könyv leírását kötelező megadni!");
if(book.language.length === 0
|| book.language === undefined
|| book.language === null)
errors.push("A könyv nyelvét kötelező megadni!");
if(book.number_of_pages === 0
|| book.number_of_pages === undefined
|| book.number_of_pages === null)
errors.push("A könyv terjedelmét kötelező megadni!");
if(book.cover.length === 0
|| book.cover === undefined
|| book.cover === null)
errors.push("A könyv borítójának típusát kötelező megadni!");
if(book.cover.length === 0
|| book.cover === undefined
|| book.cover === null)
errors.push("A könyv súlyát kötelező megadni!");
if((!book.ISBN || book.ISBN.length === 0)
|| book.ISBN === undefined
|| book.ISBN === null)
errors.push("A könyv ISBN számát kötelező megadni!");
if(book.itemcode.length === 0
|| book.itemcode === undefined
|| book.itemcode === null)
errors.push("A könyv termékkódját kötelező megadni!");
if(book.price === 0
|| book.price === undefined
|| book.price === null)
errors.push("A könyv árát kötelező megadni!");
if(book.discounted_price === 0
|| book.discounted_price === undefined
|| book.discounted_price === null)
errors.push("A könyv kedvezményes árát kötelező megadni!");
if(book.categoryID === 0
|| book.categoryID === undefined
|| book.categoryID === null)
errors.push("A könyv kategóriáját kötelező megadni!");
return errors;
}
async serchBooks(char) {
const sql = `SELECT * FROM books WHERE title LIKE ?`;
const startingP = `${char}%`;
try {
const data = await conn.promise().query(sql, [startingP]);
if(data[0].length !== 0) {
return {
status:200,
messages: data[0]
};
} else {
return {
status: 404,
messages:["A keresett erőforrás nem található!"]
};
}
} catch (err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async getBooksCatID(id) {
const sql = `SELECT * FROM books WHERE categoryID = ?`;
try {
const data = await conn.promise().query(sql, [id]);
if(data[0].length !== 0) {
return {
status:200,
messages: data[0]
};
} else {
return {
status:404,
messages:["A keresett erőforrás nem található!"]
};
}
} catch(err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async getBook(id) {
const sql = `SELECT * FROM books WHERE BookID = ?`;
try {
const data = await conn.promise().query(sql, [id]);
if(data[0].length !== 0) {
return {
status:200,
messages: data[0][0]
};
} else {
return {
status:404,
messages:["A keresett erőforrás nem található!"]
};
}
} catch(err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async getBooks() {
const sql = "SELECT * FROM books";
try {
const response = await conn.promise().query(sql);
return {
status:200,
messages:response[0]
}
} catch(err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async deleteBook(id, userID, isAdmin) {
const sql = `DELETE FROM books WHERE BookID = ?`;
if(!CheckPermission(userID, isAdmin, true)) {
return {
status:403,
messages:["Nincs jogosultságod törölni a bejegyzést!"]
}
}
try {
const response = await conn.promise().query(sql, [id]);
if(response[0].affectedRows === 1) {
return {
status:200, //ha a status code 204 (No Content) nem tudok hozzá üzenetet beállítani, emiatt állítottam be a 200-at!
messages:"Sikeres törlés!"
}
} else {
return {
status:404,
messages:"Az erőforrás nem található!"
}
}
} catch(err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async addBook(book, userID, isAdmin) {
const sql = `INSERT INTO books (author, title, publisher, the_year_of_publishing,
description, language, number_of_pages, cover, weight, ISBN, itemcode, price, discounted_price, book_url, categoryID)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
const errors = this.checkErrors(book);
if(!CheckPermission(userID, isAdmin, true)) {
return {
status:403,
messages:["Nincs jogosultságod létrehozni a bejegyzést!"]
}
}
if(errors.length > 0) {
console.log(errors);
return {
status:400,
messages:errors
}
}
try {
const response = await conn.promise().query(sql,
[
book.author,
book.title,
book.publisher,
book.the_year_of_publishing,
book.description,
book.language,
book.number_of_pages,
book.cover,
book.weight,
book.ISBN,
book.itemcode,
book.price,
book.discounted_price,
book.book_url,
book.categoryID
]);
return {
status:200,
messages:["Sikeres felvitel!"]
}
} catch(err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
async updateBook(book, userID, isAdmin) {
const sql = `UPDATE books
SET author = ?, title = ?,
publisher = ?, the_year_of_publishing = ?,
description = ?, language = ?, number_of_pages = ?,
cover = ?, weight = ?, ISBN = ?, itemcode = ?, price = ?,
discounted_price = ?, book_url = ?, categoryID = ? WHERE BookID = ?`;
const errors = this.checkErrors(book);
if(!CheckPermission(userID, isAdmin, true)) {
return {
status:403,
messages:["Nincs jogosultságod felülírni a bejegyzést!"]
}
}
if(errors.length > 0) {
return {
status:400,
messages:errors
}
}
try {
const response = await conn.promise().query(sql,
[
book.author,
book.title,
book.publisher,
book.the_year_of_publishing,
book.description,
book.language,
book.number_of_pages,
book.cover,
book.weight,
book.ISBN,
book.itemcode,
book.price,
book.discounted_price,
book.book_url,
book.categoryID,
book.bookID
]);
if(response[0].affectedRows === 1) {
return {
status:200,
messages:["Sikeres felülírás"]
}
} else {
return {
status:404,
messages:["A keresett könyv nem található!"]
}
}
} catch (err) {
console.log(err);
console.log(err.errno);
console.log(err.sqlMessage);
return {
status:503,
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
};
}
}
}
export default Books;