Skip to content

Commit

Permalink
Removed backpack. Added utility methods, fixed deploy name
Browse files Browse the repository at this point in the history
Removed backpack. Added utility methods, fixed deploy name
  • Loading branch information
MatteLazza authored May 16, 2023
2 parents 65b0fc6 + 3b4373f commit 7c99cf5
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 241 deletions.
2 changes: 1 addition & 1 deletion BookCommunication
Submodule BookCommunication updated 1 files
+1 −2 book.proto
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "microservice_book",
"version": "1.0.3",
"version": "2.0.0",
"description": "",
"main": "index.js",
"scripts": {
Expand Down
2 changes: 0 additions & 2 deletions sources/main/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ import utilityRoute from './routes/Utility';
app.use('/utility', utilityRoute)
import removeRoute from './routes/Remove';
app.use('/remove', removeRoute)
import backpackRoute from './routes/Backpack';
app.use('/backpack', backpackRoute)


export = app;
9 changes: 9 additions & 0 deletions sources/main/interfaces/Copy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import * as protoGen from '../generated/book';
import proto = protoGen.book;
import * as Data from './Data';
import { json } from 'body-parser';
import { Library } from './Library';

export interface Copy {
RFID: string;
Expand All @@ -26,6 +27,14 @@ export function generate_protoCopy(json: Copy): proto.Copy {
return new proto.Copy({RFID: json.RFID, ISBN: json.ISBN, ID_Libreria: json.ID_Libreria, Email_Proprietario: json.Email_Proprietario})
}

export function generate_protoLibrary(copies: Copy[]): proto.Library {
var copiesGen: proto.Copy[] = []
copies.forEach(function(copy: Copy) {
copiesGen.push(generate_protoCopy(copy))
});
return new proto.Library({copies: copiesGen})
}

export function verify_Basic_DataPresence(json: any): boolean {
return (json.RFID && json.ISBN && json.ID_Libreria && json.Email_Proprietario)
}
Expand Down
4 changes: 0 additions & 4 deletions sources/main/interfaces/Library.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ export function assignVals_JSON(json: any): Library {
return library;
}

export function generate_protoLibrary(json: Library): proto.Library {
return new proto.Library({ID: json.ID, Email_Proprietario: json.Email_Proprietario})
}

export function verify_Basic_DataPresence(json: any): boolean {
return (json.ID && json.RFID)
}
Expand Down
89 changes: 5 additions & 84 deletions sources/main/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ export async function buyBook(RFID: string, ISBN: string, ID_libreria: number):
return false;
}

export async function getCopyByEmail(Email: string): Promise<Copy.Copy> {
let copia = Copy.defaultCopy();
export async function getCopyByEmail(Email: string): Promise<Copy.Copy[]> {
var copia: Copy.Copy[] = []
try {
var poolConnection = await sql.connect(conf); //connect to the database
var resultSet:sql.IResult<any> = await poolConnection.request()
Expand All @@ -124,7 +124,7 @@ export async function getCopyByEmail(Email: string): Promise<Copy.Copy> {
return copia;
// ouput row contents from default record set
resultSet.recordset.forEach(function(row: any) {
copia = Copy.assignVals_JSON(row)
copia.push(Copy.assignVals_JSON(row))
});
} catch (e: any) {
console.error(e);
Expand All @@ -133,11 +133,11 @@ export async function getCopyByEmail(Email: string): Promise<Copy.Copy> {
}

export async function getCopyByRFID(RFID: string): Promise<Copy.Copy> {
let copia = Copy.defaultCopy();
var copia = Copy.defaultCopy();
try {
var poolConnection = await sql.connect(conf); //connect to the database
var resultSet:sql.IResult<any> = await poolConnection.request()
.query("select * from Copia where RFID = '" + RFID + "'"); //execute the query
.query("select * from Copia, Libreria where RFID = '" + RFID + "' AND Copia.ID_Libreria = Libreria.ID"); //execute the query
poolConnection.close(); //close connection with database
if(resultSet.rowsAffected[0] == 0) //se non è stata trovata nessuna libreria, torna quella default
return copia;
Expand Down Expand Up @@ -251,8 +251,6 @@ export async function deleteBook_Author(Author: string): Promise<boolean> {
return false;
}



export async function changeEmail(newEmail: string, oldEmail:string): Promise<boolean> {
try {
var poolConnection = await sql.connect(conf); //connect to the database
Expand All @@ -265,81 +263,4 @@ export async function changeEmail(newEmail: string, oldEmail:string): Promise<bo
console.error(e);
}
return false;
}

export async function addCopyToBackpack(RFID: string, ID_Libreria: number): Promise<boolean> {
try {
var poolConnection = await sql.connect(conf); //connect to the database
var resultSet:sql.IResult<any> = await poolConnection.request()
.query("Insert into Backpack values ('" + RFID + "', " + ID_Libreria + ")"); //execute the query
poolConnection.close(); //close connection with database
// ouput row contents from default record set
return resultSet.rowsAffected[0] == 1;
} catch (e: any) {
console.error(e);
}
return false;
}

export async function removeCopyfromBackpack(RFID: string): Promise<boolean> {
try {
var poolConnection = await sql.connect(conf); //connect to the database
await poolConnection.request().query("delete from Backpack where RFID='" + RFID + "'"); //execute the query
poolConnection.close(); //close connection with database
// ouput row contents from default record set
return true;
} catch (e: any) {
console.error(e);
}
return false;
}

export async function removeAllCopyfromBackpackByEmail(email: string): Promise<boolean> {
const library: Library.Library = await getLibreriaByEmail(email)
try {
var poolConnection = await sql.connect(conf); //connect to the database
await poolConnection.request().query("delete from Backpack where ID_Libreria="+ library.ID); //execute the query
poolConnection.close(); //close connection with database
// ouput row contents from default record set
return true;
} catch (e: any) {
console.error(e);
}
return false;
}

export async function getBackpackRFIDsByEmail(email: string): Promise<string[]> {
const library: Library.Library = await getLibreriaByEmail(email)
var RFIDS: string[] = []
try {
var poolConnection = await sql.connect(conf); //connect to the database
const resultSet = await poolConnection.request().query("select * from Backpack where ID_Libreria=" + library.ID); //execute the query
poolConnection.close(); //close connection with database
// ouput row contents from default record set
resultSet.recordset.forEach(function(row: any) {
RFIDS.push(row.RFID)
});
return RFIDS;
} catch (e: any) {
console.error(e);
}
return ["-1"];
}

export async function getBackpackISBNByEmail(email: string): Promise<string[]> {
const library: Library.Library = await getLibreriaByEmail(email)
var ISBN: string[] = []
try {
var poolConnection = await sql.connect(conf); //connect to the database
const resultSet = await poolConnection.request().query("select Copia.ISBN from Backpack, Copia where Backpack.ID_Libreria=" + library.ID + " AND Backpack.RFID = Copia.RFID"); //execute the query
poolConnection.close(); //close connection with database
// ouput row contents from default record set
resultSet.recordset.forEach(function(row: any) {
ISBN.push(row.ISBN)
});
return ISBN;
} catch (e: any) {
console.error(e);
}
return ["-1"];
}
89 changes: 0 additions & 89 deletions sources/main/routes/Backpack.ts

This file was deleted.

2 changes: 1 addition & 1 deletion sources/main/routes/Remove.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const AccessMicroserviceURL:string = "https://accessmicroservice.azurewebsites.n

router.delete('/libreria', async (req: {body: proto.BasicMessage}, res) => {
const libreriaFound = await queryAsk.getCopyByEmail(req.body.message)
if(Copy.isAssigned(libreriaFound)) {
if(libreriaFound.length > 0) {
res.status(400).send(new proto.BasicMessage({message: "There are some books still assigned to this library. Remove them before."}).toObject())
return;
}
Expand Down
19 changes: 19 additions & 0 deletions sources/main/routes/Utility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export default router;
import * as protoGen from '../generated/book'
import * as Library from '../interfaces/Library';
import * as Book from '../interfaces/Book'
import * as Copy from '../interfaces/Copy'

import proto = protoGen.book

Expand All @@ -19,6 +20,24 @@ router.get('/getBook', async (req, res) => {
res.status(200).send(Book.generate_protoBook(await queryAsk.getBookInfo(req.query.ISBN.toString())).toObject())
});

router.get('/getCopy/RFID', async (req, res) => {
if(req.query.RFID == undefined) {
res.status(400).send(new proto.BasicMessage({message: "Require RFID value."}));
return;
}
res.status(200).send(Copy.generate_protoCopy(await queryAsk.getCopyByRFID(req.query.RFID.toString())).toObject())
});

router.get('/getCopy/Email', async (req, res) => {
if(req.query.email == undefined) {
res.status(400).send(new proto.BasicMessage({message: "Require email value."}));
return;
}

const resQ: Copy.Copy[] = await queryAsk.getCopyByEmail(req.query.email.toString())
res.status(200).send(Copy.generate_protoLibrary(resQ).toObject())
});


router.post('/changeEmail', async (req: {body: proto.BasicMessage}, res) => {
if(await queryAsk.changeEmail(req.body.message, req.body.message2)) {
Expand Down
Loading

0 comments on commit 7c99cf5

Please sign in to comment.