diff --git a/frontend/js/api.js b/frontend/js/api.js index 91031af..7c76653 100644 --- a/frontend/js/api.js +++ b/frontend/js/api.js @@ -3,7 +3,8 @@ const apiUrl = '/api/v1/'; //SSE URL -export const sseUrl = 'http://149.222.51.77/da4c59b9-43c4-4144-ae39-742c6ba3ad50/live'; +// export const sseUrl = 'http://149.222.51.77/da4c59b9-43c4-4144-ae39-742c6ba3ad50/live'; +export const sseUrl = '/live'; export function fetchData(url) { const uri = apiUrl + url; diff --git a/index.js b/index.js index ac9ea9b..9663fa4 100644 --- a/index.js +++ b/index.js @@ -46,14 +46,15 @@ app.use( express.static( __dirname + '/frontend')) const accountsRoute = require("./routes/accounts"); const transactionsRoute = require("./routes/transactions"); -const { isNullOrUndefined } = require("util"); +const resetRoute = require("./routes/reset") const basepath = "/api/v1"; app.use(`${basepath}/accounts`, accountsRoute); app.use(`${basepath}/transactions`, transactionsRoute); +app.use(`${basepath}/`, resetRoute.router); - +app.get("/live", resetRoute.socketConnectionRequest) app.get("/", (req, res) => { res.sendFile( path.join( __dirname, 'client', 'index.html')) diff --git a/routes/accounts.js b/routes/accounts.js index 7872d7c..6dbaf89 100644 --- a/routes/accounts.js +++ b/routes/accounts.js @@ -10,7 +10,6 @@ router.get("/", (req, res) => { for (let i=0; i < accs.length; i++) { accs[i]["subaccounts"] = []; } - console.log(accs) res.send(accs); }); @@ -25,7 +24,6 @@ router.post("/", (req, res) => { const new_acc = db.prepare(`INSERT INTO accounts (number, name, qualifiedName, description, type, balance, localBalance) VALUES (?, ?, ? ,?, ?, 0, 0)`).run(number ,name, qualifiedName,des, type) res.status(204).send() - console.log(new_acc); }); router.get("/:account", (req, res) => { diff --git a/routes/reset.js b/routes/reset.js index e69de29..340f32c 100644 --- a/routes/reset.js +++ b/routes/reset.js @@ -0,0 +1,27 @@ +const express = require('express'); +const router = express.Router(); + +const db = require("../dependencies"); + +router.post("/reset", (req, res) => { + db.prepare("BEGIN TRANSACTION; DELETE FROM accounts; DELETE FROM transaction_entries; DELETE FROM transactions COMMIT;") +}) + +var socket +function socketConnectionRequest(req, res, next) { + const headers = { + 'Content-Type': 'text/event-stream', // To tell client, it is event stream + 'Connection': 'keep-alive', // To tell client, not to close connection + }; + res.writeHead(200, headers); + res.write('data: Connection Established, We\'ll now start receiving messages from the server.\n') + socket = res + console.log('New connection established') +} + +function publishMessageToConnectedSockets(data) { + console.log("something changed") + socket.write(`update: ${data}\n`); +} + +module.exports = { router, socketConnectionRequest, publishMessageToConnectedSockets}; diff --git a/routes/transactions.js b/routes/transactions.js index 3873e04..b9a80e5 100644 --- a/routes/transactions.js +++ b/routes/transactions.js @@ -2,6 +2,7 @@ const express = require('express'); const router = express.Router(); const db = require("../dependencies"); +const { publishMessageToConnectedSockets } = require("./reset") router.get("/", (req, res) => { const transactions = db.prepare("SELECT transaction_id as id, postingDate, valueDate, title FROM transactions").all(); @@ -24,7 +25,11 @@ router.post("/", (req, res) => { const db_entries = db.prepare("INSERT INTO transaction_entries (transaction_id, account_name, amount, label) VALUES (?, ?, ?, ?)").run(db_transaction.lastInsertRowid, transaction.entries[i].account, transaction.entries[i].amount, transaction.entries[i].label) } - res.send(db_transaction.lastInsertRowid) + publishMessageToConnectedSockets("lol") + + res.send({ + id: db_transaction.lastInsertRowid + }) }) router.get("/:id", (req, res) => { @@ -38,11 +43,27 @@ router.get("/:id", (req, res) => { }) router.put("/:id", (req, res) => { - + const transaction = db.prepare("UPDATE transactions SET postingDate = ?, valueDate = ?, title = ? WHERE transaction_id = ?").run(req.body.postingDate, req.body.valueDate, req.body.title, req.params.id) + + + const delete_entries = db.prepare("DELETE FROM transaction_entries WHERE transaction_id = ?").run(req.params.id) + for (let i = 0; i < req.body.entries.length; i++) { + const db_entries = db.prepare("INSERT INTO transaction_entries (transaction_id, account_name, amount, label) VALUES (?, ?, ?, ?)").run(req.params.id, req.body.entries[i].account, req.body.entries[i].amount, req.body.entries[i].label) + } + + publishMessageToConnectedSockets("lol") + + res.status(204).send() + }) router.delete("/:id", (req, res) => { - + const delete_entries = db.prepare("DELETE FROM transaction_entries WHERE transaction_id = ?").run(req.params.id) + const delete_transaction = db.prepare("DELETE FROM transaction WHERE transaction_id = ?").run(req.params.id) + + publishMessageToConnectedSockets("lol") + + res.status(204).send() }) module.exports = router;