-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdbmanager.h
147 lines (127 loc) · 3.3 KB
/
dbmanager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#ifndef DBMANAGER_H
#define DBMANAGER_H
#include <QSqlDatabase>
#include <QDate>
#include <QMap>
#include <QRegExp>
#include <QRegularExpressionMatchIterator>
/**
* \class DbManager
*
* \brief SQL Database Manager class
*
* DbManager sets up the connection with SQL database
* and performs some basics queries. The class requires
* existing SQL database. You can create it with sqlite:
* 1. $ sqlite3 journal.db
* 2. sqilte> CREATE TABLE journal(ID, Date, Month, Day, Year, DayOfWeek, Entry);
* 3. sqlite> .quit
*/
class DbManager
{
public:
QString lastEntry;
QString lastDate;
int lastID;
/**
* @brief Constructor
*
* Constructor sets up connection with db and opens it
* @param path - absolute path to db file
*/
DbManager(const QString& path);
/**
* @brief Destructor
*
* Close the db connection
*/
~DbManager();
/**
* @brief isOpen
* @return
*/
bool isOpen() const;
/**
* @brief isValidDatabase
* @return
*/
bool isValidDatabase();
/**
* @brief Returns a string with all of the records in db
*/
QString printAllRecords();
/**
* @brief getLastRecord Entry and puts it in the text Edit box
* @return
*/
void getLastRecord();
/**
* @brief getRecordOnDate
* Returns record on a specific date
* @return
*/
void getRecordOnDate(const QDate &date);
/**
* @brief getWeightRecord
* Returns map of dates and weights based on sql query using LIKE
* Filters numbers (which could be adjusted based on your own weight history)
* @return
*/
QMap<QString, QString> getWeightRecord();
/**
* @brief updateQuery
* @param item
* @param val
* @param id
*/
void updateQuery(QString item, QString val, int id);
/**
* @brief updateQuery
* @param item
* @param val
* @param id
*/
void updateQuery(QString item, int val, int id);
/**
* @brief writeRecord
* Writes record to the database if it doesn't exist, otherwise updates all values
* @param id
* @param dt
* @param mnth
* @param dy
* @param yr
* @param entry
*/
void writeRecord(int &id, QString &dt, QString &mnth, int &dy, int &yr,
QString &dyOfWk, QString &entry);
/**
* @brief similarDateQuery
* Returns all entries withing plus/minus 3 days of the current time of year
* @param date
* @return
*/
QString similarDateQuery(const QDate &date);
/**
* @brief searchTermQuery
* Returns all journal entries that contain terms similar to search terms separated by commas
* @param term
* @return
*/
QString searchTermQuery(const QString &term);
private:
QSqlDatabase m_db;
/**
* @brief queryAnswerFormatter
* Helper function to create QString with date, day of the week and entries separated by '--------'
* @param qry
* @return
*/
QString queryAnswerFormatter(QSqlQuery &qry);
/**
* @brief assignClassVariablesWithOneQueryResult
* Helper function to assign class variables lastEntry, lastDate, int lastID from query result
* @param query
*/
void assignClassVariablesWithOneQueryResult(QSqlQuery &query);
};
#endif // DBMANAGER_H