diff --git a/src/data/accountData.h b/src/data/accountData.h index be0a977..3563d78 100644 --- a/src/data/accountData.h +++ b/src/data/accountData.h @@ -18,6 +18,8 @@ public: explicit AccountData(const std::string &file, const std::string &name); Account *getAccount(); + + using Data::deleteObject; private: Account account; diff --git a/src/data/data.h b/src/data/data.h index 9568883..de95c11 100644 --- a/src/data/data.h +++ b/src/data/data.h @@ -24,10 +24,13 @@ public: std::string getFilePath(); void flushToFile(); + + void deleteObject(); private: const std::string fileName; const std::string homeDirectory = getpwuid(getuid())->pw_dir; std::string fileDirectory; + bool flush = true; virtual bool isJsonCorrect() = 0; }; diff --git a/src/data/data.tpp b/src/data/data.tpp index d56bab7..4e63ca4 100644 --- a/src/data/data.tpp +++ b/src/data/data.tpp @@ -52,5 +52,13 @@ void Data::flushToFile() { template Data::~Data() { - flushToFile(); + if (flush) { + flushToFile(); + } +} + +template +void Data::deleteObject() { + remove(getFilePath().c_str()); + flush = false; } diff --git a/src/main.cpp b/src/main.cpp index 21f1cff..5ee0bd7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,7 +12,6 @@ #include #include #include -#include using namespace Budget; @@ -56,7 +55,7 @@ int main(int argc, char *argv[]) { accountOptHandler.help(); } if (accountOptHandler.getSetOpts()->create) { - AccountData account(storageD + "accounts/" + accountOptHandler.getSetOpts()->createAccount + ".json", accountOptHandler.getSetOpts()->createAccount); + accounts.emplace_back(storageD + "accounts/" + accountOptHandler.getSetOpts()->createAccount + ".json", accountOptHandler.getSetOpts()->createAccount); } } return 0;