Code cleanup
This commit is contained in:
parent
aa7c830036
commit
8f44a9d46f
@ -36,11 +36,11 @@ set(HEADERS
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
|
||||
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
add_compile_definitions(DEBUG=1)
|
||||
ELSE()
|
||||
ELSE ()
|
||||
add_compile_definitions(DEBUG=0)
|
||||
ENDIF()
|
||||
ENDIF ()
|
||||
message(STATUS "Build type is " ${CMAKE_BUILD_TYPE})
|
||||
|
||||
|
||||
|
@ -19,13 +19,13 @@ Budget::Models::Account Database::getAccount(const std::string &accountName, sql
|
||||
|
||||
if (rc == SQLITE_ROW) {
|
||||
long long id = sqlite3_column_int64(stmt, 0);
|
||||
char* name = (char*)(sqlite3_column_text(stmt, 1));
|
||||
char* description = (char*)sqlite3_column_text(stmt, 2);
|
||||
char *name = (char *) (sqlite3_column_text(stmt, 1));
|
||||
char *description = (char *) sqlite3_column_text(stmt, 2);
|
||||
if (sqlite3_column_type(stmt, 3) == SQLITE_NULL || sqlite3_column_type(stmt, 4) == SQLITE_NULL) {
|
||||
sqlite3_finalize(stmt);
|
||||
return {id, name, description, nullptr};
|
||||
}
|
||||
auto* money = new Budget::Models::Money(sqlite3_column_int64(stmt, 3), sqlite3_column_int64(stmt, 4));
|
||||
auto *money = new Budget::Models::Money(sqlite3_column_int64(stmt, 3), sqlite3_column_int64(stmt, 4));
|
||||
sqlite3_finalize(stmt);
|
||||
return {id, name, description, money};
|
||||
} else if (rc == SQLITE_DONE) {
|
||||
@ -55,10 +55,12 @@ void Database::deleteAccount(Budget::Models::Account *account, sqlite3 *db) {
|
||||
|
||||
void Database::cacheAccountValue(Budget::Models::Account *account, sqlite3 *db) {
|
||||
sqlite3_stmt *stmt;
|
||||
int rc = sqlite3_prepare_v2(db, "SELECT SUM(dollars * 100 + cents) / 100 as nDollars, SUM(dollars * 100 + cents) % 100 as nCents FROM("
|
||||
int rc = sqlite3_prepare_v2(db,
|
||||
"SELECT SUM(dollars * 100 + cents) / 100 as nDollars, SUM(dollars * 100 + cents) % 100 as nCents FROM("
|
||||
"SELECT SUM(dollars * 100 + cents) / 100 AS dollars, SUM(dollars * 100 + cents) % 100 AS cents FROM earning WHERE accountId = ? "
|
||||
"UNION ALL "
|
||||
"SELECT SUM(dollars * 100 + cents) / 100 * -1 AS dollars, SUM(dollars * 100 + cents) % 100 * -1 AS cents FROM payment WHERE accountId = ?);", -1, &stmt, nullptr);
|
||||
"SELECT SUM(dollars * 100 + cents) / 100 * -1 AS dollars, SUM(dollars * 100 + cents) % 100 * -1 AS cents FROM payment WHERE accountId = ?);",
|
||||
-1, &stmt, nullptr);
|
||||
|
||||
if (rc != SQLITE_OK)
|
||||
throw std::runtime_error("Failed preparing get cashedValue " + account->name);
|
||||
@ -73,16 +75,15 @@ void Database::cacheAccountValue(Budget::Models::Account *account, sqlite3 *db)
|
||||
if (rc == SQLITE_ROW) {
|
||||
dollars = sqlite3_column_int64(stmt, 0);
|
||||
cents = sqlite3_column_int64(stmt, 1);
|
||||
}
|
||||
else if (rc == SQLITE_DONE) {
|
||||
} else if (rc == SQLITE_DONE) {
|
||||
dollars = 0;
|
||||
cents = 0;
|
||||
}
|
||||
else
|
||||
} else
|
||||
throw std::runtime_error("Failed get cashedValue " + account->name);
|
||||
|
||||
sqlite3_reset(stmt);
|
||||
rc = sqlite3_prepare_v2(db, "UPDATE account SET cachedDollars = ?, cachedCents = ? WHERE id = ?", -1, &stmt, nullptr);
|
||||
rc = sqlite3_prepare_v2(db, "UPDATE account SET cachedDollars = ?, cachedCents = ? WHERE id = ?", -1, &stmt,
|
||||
nullptr);
|
||||
if (rc != SQLITE_OK)
|
||||
throw std::runtime_error("Failed preparing set cashedValue " + account->name);
|
||||
|
||||
@ -115,7 +116,8 @@ void Database::accountDescription(Budget::Models::Account *account, sqlite3 *db)
|
||||
throw std::runtime_error("Failed to set description on " + account->name);
|
||||
}
|
||||
|
||||
long long int Database::createAccount(Budget::OptHandlers::CreateOperation::Flags *flags, std::string &account, sqlite3 *db) {
|
||||
long long int
|
||||
Database::createAccount(Budget::OptHandlers::CreateOperation::Flags *flags, std::string &account, sqlite3 *db) {
|
||||
sqlite3_stmt *stmt;
|
||||
int rc = sqlite3_prepare_v2(db, "INSERT INTO account (name, description) VALUES (?, ?)", -1, &stmt, nullptr);
|
||||
|
||||
@ -123,7 +125,8 @@ long long int Database::createAccount(Budget::OptHandlers::CreateOperation::Flag
|
||||
throw std::runtime_error("Failed preparing createAccount statement");
|
||||
|
||||
sqlite3_bind_text(stmt, 1, account.c_str(), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 2, (flags->description.empty() ? nullptr : flags->description.c_str()), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 2, (flags->description.empty() ? nullptr : flags->description.c_str()), -1,
|
||||
SQLITE_TRANSIENT);
|
||||
|
||||
rc = sqlite3_step(stmt);
|
||||
|
||||
@ -136,9 +139,11 @@ long long int Database::createAccount(Budget::OptHandlers::CreateOperation::Flag
|
||||
return sqlite3_last_insert_rowid(db);
|
||||
}
|
||||
|
||||
long long int Database::earn(Budget::Models::Account *account, Budget::OptHandlers::EarnOperation::Flags *flags, sqlite3 *db) {
|
||||
long long int
|
||||
Database::earn(Budget::Models::Account *account, Budget::OptHandlers::EarnOperation::Flags *flags, sqlite3 *db) {
|
||||
sqlite3_stmt *stmt;
|
||||
int rc = sqlite3_prepare_v2(db, "INSERT INTO earning (dollars, cents, description, receipt, accountId, date) VALUES "
|
||||
int rc = sqlite3_prepare_v2(db,
|
||||
"INSERT INTO earning (dollars, cents, description, receipt, accountId, date) VALUES "
|
||||
"(?, ?, ?, ?, ?, ?);",
|
||||
-1, &stmt, nullptr);
|
||||
|
||||
@ -147,7 +152,8 @@ long long int Database::earn(Budget::Models::Account *account, Budget::OptHandle
|
||||
|
||||
sqlite3_bind_int64(stmt, 1, flags->dollars);
|
||||
sqlite3_bind_int64(stmt, 2, flags->cents);
|
||||
sqlite3_bind_text(stmt, 3, (flags->description.empty() ? nullptr : flags->description.c_str()), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 3, (flags->description.empty() ? nullptr : flags->description.c_str()), -1,
|
||||
SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 4, (flags->receipt.empty() ? nullptr : flags->receipt.c_str()), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_int64(stmt, 5, account->id);
|
||||
sqlite3_bind_int64(stmt, 6, flags->date);
|
||||
@ -162,9 +168,11 @@ long long int Database::earn(Budget::Models::Account *account, Budget::OptHandle
|
||||
return sqlite3_last_insert_rowid(db);
|
||||
}
|
||||
|
||||
long long int Database::pay(Budget::Models::Account *account, Budget::OptHandlers::PaymentOperation::Flags *flags, sqlite3 *db) {
|
||||
long long int
|
||||
Database::pay(Budget::Models::Account *account, Budget::OptHandlers::PaymentOperation::Flags *flags, sqlite3 *db) {
|
||||
sqlite3_stmt *stmt;
|
||||
int rc = sqlite3_prepare_v2(db, "INSERT INTO payment (dollars, cents, description, receipt, accountId, date) VALUES "
|
||||
int rc = sqlite3_prepare_v2(db,
|
||||
"INSERT INTO payment (dollars, cents, description, receipt, accountId, date) VALUES "
|
||||
"(?, ?, ?, ?, ?, ?);",
|
||||
-1, &stmt, nullptr);
|
||||
|
||||
@ -173,7 +181,8 @@ long long int Database::pay(Budget::Models::Account *account, Budget::OptHandler
|
||||
|
||||
sqlite3_bind_int64(stmt, 1, flags->dollars);
|
||||
sqlite3_bind_int64(stmt, 2, flags->cents);
|
||||
sqlite3_bind_text(stmt, 3, (flags->description.empty() ? nullptr : flags->description.c_str()), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 3, (flags->description.empty() ? nullptr : flags->description.c_str()), -1,
|
||||
SQLITE_TRANSIENT);
|
||||
sqlite3_bind_text(stmt, 4, (flags->receipt.empty() ? nullptr : flags->receipt.c_str()), -1, SQLITE_TRANSIENT);
|
||||
sqlite3_bind_int64(stmt, 5, account->id);
|
||||
sqlite3_bind_int64(stmt, 6, flags->date);
|
||||
|
@ -71,7 +71,8 @@ public:
|
||||
*
|
||||
* @throws std::runtime_error If the accountName could not be created in the database
|
||||
*/
|
||||
static long long int createAccount(Budget::OptHandlers::CreateOperation::Flags *flags, std::string &account, sqlite3 *db);
|
||||
static long long int
|
||||
createAccount(Budget::OptHandlers::CreateOperation::Flags *flags, std::string &account, sqlite3 *db);
|
||||
|
||||
/**
|
||||
* @brief The function records an earning in the database
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
using namespace Budget;
|
||||
|
||||
const char* createTables = "create table if not exists account(id INTEGER constraint account_pk primary key autoincrement, name TEXT, description TEXT, cachedDollars INT, cachedCents INT);"
|
||||
const char *createTables = "create table if not exists account(id INTEGER constraint account_pk primary key autoincrement, name TEXT, description TEXT, cachedDollars INT, cachedCents INT);"
|
||||
"create unique index if not exists account_name_uindex on account (name);"
|
||||
"create table if not exists earning(id INTEGER constraint earning_pk primary key autoincrement, dollars INT not null, cents INT not null, description TEXT, receipt TEXT, accountId INT not null references account on update cascade on delete cascade, date INTEGER not null);"
|
||||
"create index if not exists earning_date_index on earning (date desc);"
|
||||
|
@ -12,7 +12,7 @@
|
||||
namespace Budget::Models {
|
||||
class Account {
|
||||
public:
|
||||
Account(long long int id, std::string name, std::string description, Money* cachedValue)
|
||||
Account(long long int id, std::string name, std::string description, Money *cachedValue)
|
||||
: id(id), name(std::move(name)), description(std::move(description)), cachedValue(cachedValue) {}
|
||||
|
||||
// ~Account() {
|
||||
@ -22,7 +22,7 @@ namespace Budget::Models {
|
||||
long long id;
|
||||
std::string name;
|
||||
std::string description;
|
||||
Money* cachedValue;
|
||||
Money *cachedValue;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,8 @@
|
||||
#include "transaction.h"
|
||||
|
||||
namespace Budget::Models {
|
||||
class Earning : Transaction {};
|
||||
class Earning : Transaction {
|
||||
};
|
||||
}
|
||||
|
||||
#endif //BUDGET_EARNING_H
|
||||
|
@ -17,8 +17,6 @@ Money operator+(const Money &lhs, const Money &rhs) {
|
||||
return {total_dollars, total_cents};
|
||||
}
|
||||
|
||||
|
||||
|
||||
Money operator-(const Money &lhs, const Money &rhs) {
|
||||
long long total_cents = lhs.getDollars() * 100 + lhs.getCents() - rhs.getDollars() * 100 - rhs.getCents();
|
||||
return {total_cents / 100, std::abs(total_cents % 100)};
|
||||
|
@ -33,6 +33,7 @@ namespace Budget::Models {
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, const Budget::Models::Money &money);
|
||||
|
||||
#endif //BUDGET_MONEY_H
|
||||
|
@ -8,7 +8,8 @@
|
||||
#include "transaction.h"
|
||||
|
||||
namespace Budget::Models {
|
||||
class Payment : Transaction {};
|
||||
class Payment : Transaction {
|
||||
};
|
||||
}
|
||||
|
||||
#endif //BUDGET_EARNING_H
|
||||
|
@ -22,12 +22,12 @@ void EarnOperation::commit() {
|
||||
extension = flags.receipt.substr(pos);
|
||||
}
|
||||
|
||||
std::ofstream dest(storageD + "receipts/receipt/" + std::to_string(account.id) + extension, std::ios::binary);
|
||||
std::ofstream dest(storageD + "receipts/receipt/" + std::to_string(account.id) + extension,
|
||||
std::ios::binary);
|
||||
dest << source.rdbuf();
|
||||
source.close();
|
||||
dest.close();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
throw Exceptions::BadValue("File " + flags.receipt + " does not exist");
|
||||
}
|
||||
}
|
||||
|
@ -22,12 +22,12 @@ void PaymentOperation::commit() {
|
||||
extension = flags.receipt.substr(pos);
|
||||
}
|
||||
|
||||
std::ofstream dest(storageD + "receipts/receipt/" + std::to_string(account.id) + extension, std::ios::binary);
|
||||
std::ofstream dest(storageD + "receipts/receipt/" + std::to_string(account.id) + extension,
|
||||
std::ios::binary);
|
||||
dest << source.rdbuf();
|
||||
source.close();
|
||||
dest.close();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
throw Exceptions::BadValue("File " + flags.receipt + " does not exist");
|
||||
}
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ public:
|
||||
*/
|
||||
static bool confirm(const std::string &question);
|
||||
|
||||
static long long int extractDollars(const std::string& string);
|
||||
static long long int extractDollars(const std::string &string);
|
||||
|
||||
static long long int extractCents(const std::string& string);
|
||||
static long long int extractCents(const std::string &string);
|
||||
|
||||
static bool hasNumber(const std::string &string);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user