83 lines
2.9 KiB
JavaScript
83 lines
2.9 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
const db = require("../dependencies");
|
|
const { update } = require("./reset")
|
|
|
|
router.get("/", (req, res) => {
|
|
const transactions = db.prepare("SELECT transaction_id as id, postingDate, valueDate, title FROM transactions").all();
|
|
|
|
res.send(transactions)
|
|
|
|
})
|
|
|
|
|
|
router.post("/", (req, res) => {
|
|
const transaction = {
|
|
postingDate: req.body.postingDate,
|
|
valueDate: req.body.valueDate,
|
|
title: req.body.title,
|
|
entries: req.body.entries
|
|
}
|
|
|
|
const db_transaction = db.prepare("INSERT INTO transactions (postingDate, valueDate, title) VALUES (?, ?, ?) RETURNING transaction_id").run(transaction.postingDate, transaction.valueDate, transaction.title)
|
|
|
|
for (let i = 0; i < transaction.entries.length; i++) {
|
|
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({
|
|
id: db_transaction.lastInsertRowid
|
|
})
|
|
for (res of update.values()) {
|
|
// res.write("data: update\n\n")
|
|
res.write('event: update\n');
|
|
res.write('data: {}\n\n');
|
|
}
|
|
|
|
})
|
|
|
|
router.get("/:id", (req, res) => {
|
|
const transaction = db.prepare("SELECT postingDate, valueDate, title FROM transactions WHERE transaction_id = ?").get(req.params.id);
|
|
const entries = db.prepare("SELECT account_name as account, amount, label FROM transaction_entries WHERE transaction_id = ?").all(req.params.id)
|
|
|
|
transaction["entries"] = entries
|
|
|
|
res.send(transaction)
|
|
})
|
|
|
|
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)
|
|
}
|
|
|
|
|
|
res.status(204).send()
|
|
for (res of update.values()) {
|
|
res.write('event: update\n');
|
|
res.write('data: {}\n\n');
|
|
}
|
|
|
|
})
|
|
|
|
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 transactions WHERE transaction_id = ?").run(req.params.id)
|
|
|
|
|
|
res.status(204).send()
|
|
for (res of update.values()) {
|
|
// res.write("data: update\n\n")
|
|
res.write('event: update\n');
|
|
res.write('data: {}\n\n');
|
|
}
|
|
|
|
})
|
|
|
|
module.exports = router;
|