aboutsummaryrefslogtreecommitdiff
path: root/database.h
diff options
context:
space:
mode:
Diffstat (limited to 'database.h')
-rw-r--r--database.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/database.h b/database.h
new file mode 100644
index 0000000..cdde765
--- /dev/null
+++ b/database.h
@@ -0,0 +1,50 @@
+#ifndef DATABASE_H
+#define DATABASE_H
+
+#include <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlError>
+#include <QString>
+#include <QList>
+#include <QDate>
+#include "transaction.h"
+
+class Database {
+public:
+ Database();
+ ~Database();
+
+ bool open(const QString &path);
+ bool createTables();
+
+ // Transaction operations
+ bool addTransaction(const Transaction &transaction);
+ bool updateTransaction(const Transaction &transaction);
+ bool deleteTransaction(int id);
+ QList<Transaction> getTransactions(const QDate &startDate, const QDate &endDate);
+ QList<Transaction> getAllTransactions();
+
+ // Recurring rule operations
+ bool addRecurringRule(const RecurringRule &rule);
+ bool updateRecurringRule(const RecurringRule &rule);
+ bool deleteRecurringRule(int id);
+ QList<RecurringRule> getAllRecurringRules();
+
+ // Reconciliation
+ bool convertToActual(int transactionId, double actualAmount);
+
+ // Settings
+ QString getSetting(const QString &name, const QString &defaultValue = QString());
+ bool setSetting(const QString &name, const QString &value);
+
+ QString lastError() const;
+
+private:
+ QSqlDatabase db;
+ QString errorMsg;
+
+ Transaction queryToTransaction(QSqlQuery &query);
+ RecurringRule queryToRecurringRule(QSqlQuery &query);
+};
+
+#endif // DATABASE_H