generated from lucien/api-template
265 lines
5.3 KiB
JavaScript
265 lines
5.3 KiB
JavaScript
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_DATABASE,
|
|
});
|
|
}
|
|
|
|
// +-------------------------------+
|
|
// | Users |
|
|
// +-------------------------------+
|
|
|
|
function addUser(connection, name, lastname, email, numero, password) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO users (name, lastname, email, numero, password) VALUES (?, ?, ?, ?, ?)`,
|
|
[name, lastname, email, numero, password],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getUsers(connection) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM users`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getUser(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM users WHERE id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getUserByEmail(connection, email) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM users WHERE email = ?`,
|
|
[email],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
// +-------------------------------+
|
|
// | Accounts |
|
|
// +-------------------------------+
|
|
|
|
function getUserAccounts(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM accounts WHERE client_id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getAccount(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM accounts WHERE id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addAccount(connection, client_id, name) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO accounts (client_id, name) VALUES (?, ?)`,
|
|
[client_id, name],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function removeAccount(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`DELETE FROM accounts WHERE id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function setAccountBalance(connection, id, balance) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`UPDATE accounts SET balance = ? WHERE id = ?`,
|
|
[balance, id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
// +-------------------------------+
|
|
// | Cards |
|
|
// +-------------------------------+
|
|
|
|
function getUserCards(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT cards.*, accounts.name AS account_name
|
|
FROM cards
|
|
JOIN accounts ON cards.account_id = accounts.id
|
|
JOIN users ON accounts.client_id = users.id
|
|
WHERE users.id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addCard(connection, account_id, number, expiration, cvc) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO cards (account_id, number, expiration, cvc) VALUES (?, ?, ?, ?)`,
|
|
[account_id, number, expiration, cvc],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function removeCard(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`DELETE FROM cards WHERE id = ?`,
|
|
[id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
// +-------------------------------+
|
|
// | Transfers |
|
|
// +-------------------------------+
|
|
|
|
function getUserTransfers(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT *
|
|
FROM transfers
|
|
JOIN accounts as sender ON transfers.account_from_id = sender.id
|
|
JOIN accounts as receiver ON transfers.account_to_id = receiver.id
|
|
WHERE sender.client_id = ? OR receiver.client_id = ?`,
|
|
[id, id],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addTransfer(connection, account_from_id, account_to_id, name, amount) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO transfers (account_from_id, account_to_id, name, value) VALUES (?, ?, ?, ?)`,
|
|
[account_from_id, account_to_id, name, amount],
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
getConnection,
|
|
|
|
addUser,
|
|
getUsers,
|
|
getUser,
|
|
getUserByEmail,
|
|
|
|
getUserAccounts,
|
|
getAccount,
|
|
addAccount,
|
|
removeAccount,
|
|
setAccountBalance,
|
|
|
|
getUserCards,
|
|
addCard,
|
|
removeCard,
|
|
|
|
getUserTransfers,
|
|
addTransfer,
|
|
};
|