const mysql = require("mysql"); function getConnection() { return mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DB, }); } function getShares(connection) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Share`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getShare(connection, id) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Share WHERE id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getShareholderShares(connection, owner_id) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Share WHERE owner_id = ${owner_id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getCompanyShares(connection, id) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Share WHERE company_id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function setShareOwner(connection, share_id, owner_id) { return new Promise((resolve, reject) => { connection.query( `UPDATE Share SET owner_id = ${owner_id} WHERE id = ${share_id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function addShare(connection, price, company_id) { return new Promise((resolve, reject) => { connection.query( `INSERT INTO Share (price, owner_id, company_id) VALUES (${price}, -1, ${company_id})`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getShareholders(connection) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Shareholder`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getShareholder(connection, id) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Shareholder WHERE id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function setShareholderCapital(connection, id, capital) { return new Promise((resolve, reject) => { connection.query( `UPDATE Shareholder SET capital = ${capital} WHERE id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getCompanies(connection) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Company`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function getCompany(connection, id) { return new Promise((resolve, reject) => { connection.query( `SELECT * FROM Company WHERE id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function setCompanyCapital(connection, id, capital ) { return new Promise((resolve, reject) => { connection.query( `UPDATE Company SET capital = ${capital} WHERE id = ${id}`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } function addTransaction(connection, price, seller_id, buyer_id, share_id) { return new Promise((resolve, reject) => { connection.query( `INSERT INTO Transaction (sell_price, seller_id, buyer_id, share_id) VALUES (${price}, ${seller_id}, ${buyer_id}, ${share_id})`, (error, result) => { if (error) { throw(new Error(error)); } resolve(result); } ); }); } module.exports = { getConnection, getShares, getShare, getShareholderShares, getCompanyShares, setShareOwner, addShare, getShareholders, getShareholder, setShareholderCapital, getCompanies, getCompany, setCompanyCapital, addTransaction, }