89 lines
2.8 KiB
JavaScript
89 lines
2.8 KiB
JavaScript
const express = require("express");
|
|
const router = express.Router();
|
|
|
|
const db = require("../dependencies");
|
|
|
|
router.get("/", (req, res) => {
|
|
const accs = db.prepare(`SELECT number, name, qualifiedName, description, type, localBalance, te.balance FROM accounts
|
|
JOIN (SELECT SUM(amount) as balance, account_name FROM transaction_entries GROUP BY account_name) te ON te.account_name = name`).all();
|
|
new_accs = [];
|
|
for (let i=0; i < accs.length; i++) {
|
|
accs[i]["subaccounts"] = [];
|
|
}
|
|
res.send(accs);
|
|
});
|
|
|
|
|
|
|
|
router.post("/", (req, res) => {
|
|
const number = req.body.number;
|
|
const name = req.body.name;
|
|
const des = req.body.description;
|
|
const type = req.body.type;
|
|
const qualifiedName = req.body.parentAccount + ":" + name
|
|
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()
|
|
|
|
});
|
|
|
|
router.get("/:account", (req, res) => {
|
|
const acc = db
|
|
.prepare("SELECT * FROM accounts WHERE name = ?")
|
|
.get(req.params.account);
|
|
|
|
if (acc == undefined) {
|
|
res.status(404).send({
|
|
code: 404,
|
|
message: "Account not found",
|
|
additionalPropl: {}
|
|
});
|
|
} else {
|
|
entries = db.prepare(`
|
|
SELECT
|
|
transaction_entries.transaction_id as id,
|
|
offsetAccounts,
|
|
transaction_entries.amount,
|
|
transaction_entries.label,
|
|
postingDate,
|
|
valueDate,
|
|
title
|
|
from transaction_entries
|
|
JOIN transactions ON transaction_entries.transaction_id = transactions.transaction_id
|
|
JOIN (SELECT account_name as offsetAccounts, transaction_id FROM transaction_entries) te ON te.transaction_id = id AND offsetAccounts IS NOT transaction_entries.account_name
|
|
WHERE transaction_entries.account_name = ?`).all(req.params.account)
|
|
acc['entries'] = entries
|
|
res.send(acc);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
router.put("/:account", (req, res) => {
|
|
const oldname = req.params.account;
|
|
const name = req.body.name;
|
|
const description = req.body.description;
|
|
const type = req.body.type;
|
|
const qualifiedName = req.body.parentAccount + ":" + name;
|
|
|
|
const acc = db.prepare(`UPDATE accounts SET description = ?, name = ?, qualifiedName = ?, type = ? WHERE name=?`).run(description, name, qualifiedName, type, oldname);
|
|
|
|
if (acc == undefined) {
|
|
res.status(404).send({
|
|
code: 404,
|
|
message: "Account not found",
|
|
additionalPropl: {}
|
|
})
|
|
} else {
|
|
res.status(204).send()
|
|
}
|
|
});
|
|
|
|
router.delete("/:account", (req, res) => {
|
|
const acc = db.prepare("DELETE FROM accounts WHERE name = ? RETURNING *").run(req.params.account)
|
|
|
|
res.status(200).send()
|
|
});
|
|
|
|
|
|
module.exports = router;
|