From 1d2f9dabfe2e16cc4b148e63a042d6b39d684da1 Mon Sep 17 00:00:00 2001 From: Makussu Date: Thu, 6 Jun 2024 20:18:26 +0200 Subject: [PATCH] reset --- accounts.json | 231 +++++++++++++++++++++++++++++++++++++++ dependencies.js | 34 +++++- routes/accounts.js | 3 +- routes/reset.js | 5 +- routes/transactions.js | 2 +- test/create_account.hurl | 2 +- 6 files changed, 271 insertions(+), 6 deletions(-) create mode 100644 accounts.json diff --git a/accounts.json b/accounts.json new file mode 100644 index 0000000..536a6fe --- /dev/null +++ b/accounts.json @@ -0,0 +1,231 @@ +[ + { + "number": 1000, + "name": "Aktiva", + "qualifiedName": "Aktiva", + "type": "meta", + "balance": 7885.58, + "localBalance": 0, + "description": "Meta-Konto für das Vermögen", + "subaccounts": [] + }, + { + "number": 1100, + "name": "Barvermögen", + "qualifiedName": "Aktiva:Barvermögen", + "type": "meta", + "balance": 7885.58, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 1110, + "name": "Bargeld", + "qualifiedName": "Aktiva:Barvermögen:Bargeld", + "type": "default", + "balance": 1048.42, + "localBalance": 1048.42, + "subaccounts": [] + }, + { + "number": 1120, + "name": "Girokonto", + "qualifiedName": "Aktiva:Barvermögen:Girokonto", + "type": "default", + "balance": 2105.16, + "localBalance": 2105.16, + "subaccounts": [] + }, + { + "number": 1130, + "name": "Sparkonto", + "qualifiedName": "Aktiva:Barvermögen:Sparkonto", + "type": "default", + "balance": 4732, + "localBalance": 4732, + "subaccounts": [] + }, + { + "number": 4000, + "name": "Erträge", + "qualifiedName": "Erträge", + "type": "meta", + "balance": -7090.64, + "localBalance": 0, + "description": "Meta-Konto für alle Einnahmen", + "subaccounts": [] + }, + { + "number": 4100, + "name": "Gehalt", + "qualifiedName": "Erträge:Gehalt", + "type": "default", + "balance": -5458.64, + "localBalance": -5458.64, + "subaccounts": [] + }, + { + "number": 4200, + "name": "Kindergeld", + "qualifiedName": "Erträge:Kindergeld", + "type": "default", + "balance": -1000, + "localBalance": -1000, + "subaccounts": [] + }, + { + "number": 4300, + "name": "BAföG", + "qualifiedName": "Erträge:BAföG", + "type": "default", + "balance": 0, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 4400, + "name": "Stipendium", + "qualifiedName": "Erträge:Stipendium", + "type": "default", + "balance": 0, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 4500, + "name": "Unterhalt", + "qualifiedName": "Erträge:Unterhalt", + "type": "default", + "balance": -600, + "localBalance": -600, + "subaccounts": [] + }, + { + "number": 4800, + "name": "Zinsen", + "qualifiedName": "Erträge:Zinsen", + "type": "default", + "balance": -32, + "localBalance": -32, + "subaccounts": [] + }, + { + "number": 4900, + "name": "Sonstiges", + "qualifiedName": "Erträge:Sonstiges", + "type": "default", + "balance": 0, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 6000, + "name": "Aufwendungen", + "qualifiedName": "Aufwendungen", + "type": "meta", + "balance": 3699.18, + "localBalance": 0, + "description": "Meta-Konto für alle Ausgaben", + "subaccounts": [] + }, + { + "number": 6100, + "name": "Miete", + "qualifiedName": "Aufwendungen:Miete", + "type": "meta", + "balance": 2240, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 6110, + "name": "Kaltmiete", + "qualifiedName": "Aufwendungen:Miete:Kaltmiete", + "type": "default", + "balance": 1920, + "localBalance": 1920, + "subaccounts": [] + }, + { + "number": 6120, + "name": "Nebenkosten", + "qualifiedName": "Aufwendungen:Miete:Nebenkosten", + "type": "default", + "balance": 320, + "localBalance": 320, + "subaccounts": [] + }, + { + "number": 6200, + "name": "Telekommunikation", + "qualifiedName": "Aufwendungen:Telekommunikation", + "type": "meta", + "balance": 219.6, + "localBalance": 0, + "subaccounts": [] + }, + { + "number": 6210, + "name": "Festnetz", + "qualifiedName": "Aufwendungen:Telekommunikation:Festnetz", + "type": "default", + "balance": 139.8, + "localBalance": 139.8, + "subaccounts": [] + }, + { + "number": 6220, + "name": "Mobilfunk", + "qualifiedName": "Aufwendungen:Telekommunikation:Mobilfunk", + "type": "default", + "balance": 79.8, + "localBalance": 79.8, + "subaccounts": [] + }, + { + "number": 6300, + "name": "Semesterbeitrag", + "qualifiedName": "Aufwendungen:Semesterbeitrag", + "type": "default", + "balance": 246, + "localBalance": 246, + "subaccounts": [] + }, + { + "number": 6400, + "name": "Lebensmittel", + "qualifiedName": "Aufwendungen:Lebensmittel", + "type": "default", + "balance": 724.58, + "localBalance": 724.58, + "subaccounts": [] + }, + { + "number": 6500, + "name": "Mitgliedschaften", + "qualifiedName": "Aufwendungen:Mitgliedschaften", + "type": "default", + "balance": 79, + "localBalance": 79, + "subaccounts": [] + }, + { + "number": 6900, + "name": "Sonstiges", + "qualifiedName": "Aufwendungen:Sonstiges", + "type": "default", + "balance": 190, + "localBalance": 190, + "subaccounts": [] + }, + { + "number": 9000, + "name": "Anfangsbestand", + "qualifiedName": "Anfangsbestand", + "type": "default", + "balance": -4494.12, + "localBalance": -4494.12, + "description": "Konto für Anfangsbestand zum 01.11.2023", + "subaccounts": [] + } +] diff --git a/dependencies.js b/dependencies.js index 601c09d..44888a3 100644 --- a/dependencies.js +++ b/dependencies.js @@ -5,11 +5,43 @@ const databaseFile = "mytest.db" fs.readFile(databaseFile, (err, data) => { if (err) { fs.openSync(databaseFile, 'w'); + create_initial_accounts() } }) // DB const db = require('better-sqlite3')(databaseFile); +function create_initial_accounts() { + fs.readFile("accounts.json", "utf8", (err, jsonString) => { + if (err) { + console.log("Error reading the JSON file:", err); + response.send("error") + } + try { + account_data = JSON.parse(jsonString); + for (let i = 0; i < account_data.length; i++) { + account = account_data[i] + console.log(account_data[i]["qualifiedName"]) + parentAccount = account["qualifiedName"].split(":") + parentAccount.pop() + parentAccount = parentAccount.join(":") + if (parentAccount == "") { + parentAccount = undefined + } + const new_acc = db + .prepare( + `INSERT INTO accounts (number, name, qualifiedName, description, type, parentAccount) VALUES (?, ?, ? ,?, ?, ?)`, + ) + .run(account["number"], account["name"], account["qualifiedName"], "Initial Account", account["type"], parentAccount); + + } + } + catch (err) { + console.log("Error parsing JSON string:", err); + } + }); +} + // Bootstrap the db db.exec(` CREATE TABLE IF NOT EXISTS accounts ( @@ -39,4 +71,4 @@ FOREIGN KEY (transaction_id) REFERENCES transactions (transaction_id) FOREIGN KE -module.exports = db +module.exports = { db, create_initial_accounts } diff --git a/routes/accounts.js b/routes/accounts.js index f590327..856614f 100644 --- a/routes/accounts.js +++ b/routes/accounts.js @@ -1,7 +1,7 @@ const express = require("express"); const router = express.Router(); -const db = require("../dependencies"); +const {db} = require("../dependencies"); const {send_sse_update} = require("../sse") // Fix if balance is null @@ -53,6 +53,7 @@ router.get("/", (req, res) => { LEFT JOIN (SELECT SUM(amount) as localBalance, account_name FROM transaction_entries GROUP BY account_name) te ON te.account_name = qualifiedName LEFT JOIN (SELECT SUM(amount) as balance, account_name FROM transaction_entries GROUP BY account_name) tf ON tf.account_name = qualifiedName`; const accs = db.prepare(base_query).all(); + console.log(accs) var real_accs = []; diff --git a/routes/reset.js b/routes/reset.js index 3bb78b5..4baedcb 100644 --- a/routes/reset.js +++ b/routes/reset.js @@ -1,11 +1,12 @@ const express = require('express'); const router = express.Router(); -const db = require("../dependencies"); +const {db, create_initial_accounts} = require("../dependencies"); const {send_sse_update} = require("../sse") router.post("/reset", (req, res) => { - db.exec("DELETE FROM accounts; DELETE FROM transaction_entries; DELETE FROM transactions") + db.exec("DELETE FROM transaction_entries; DELETE FROM transactions; DELETE FROM accounts") + create_initial_accounts() res.status(204).send() send_sse_update() diff --git a/routes/transactions.js b/routes/transactions.js index 8f22dd7..34ef697 100644 --- a/routes/transactions.js +++ b/routes/transactions.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const db = require("../dependencies"); +const {db} = require("../dependencies"); const {send_sse_update} = require("../sse") router.get("/", (req, res) => { diff --git a/test/create_account.hurl b/test/create_account.hurl index 7321cb2..2629b1b 100644 --- a/test/create_account.hurl +++ b/test/create_account.hurl @@ -1,2 +1,2 @@ POST http://localhost:3000/api/v1/accounts/ -{"number":2000,"name":"Meintest","description":"Hallo","type":"default","parentAccount":"meins"} +{"number":2000,"name":"Meintest","description":"Hallo","type":"default","parentAccount":"Aktiva"}