-
Notifications
You must be signed in to change notification settings - Fork 0
/
database.cpp
109 lines (97 loc) · 3.18 KB
/
database.cpp
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
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QVariant>
#include <QHostInfo>
#include "database.h"
Database::Database() : ISaver()
{}
QString Database::init()
{
mDb = QSqlDatabase::addDatabase("QSQLITE");
mDb.setDatabaseName("database.db");
if (!mDb.open()) {
return tr("Database Connection Error");
}
else if(mDb.tables().count() == 0)
{
createTables();
return tr("Database is empty, created database.");
}
return nullptr;
}
void Database::createTables()
{
mDb.exec("CREATE TABLE \"barcodes\" ("
"\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,"
"\"data\" TEXT NOT NULL,"
"\"computer\" TEXT NOT NULL,"
"\"datetime\" TEXT NOT NULL);");
mDb.exec("CREATE TABLE \"settings\" ("
"\"lang\" TEXT NOT NULL,"
"\"showComputerNames\" INTEGER NOT NULL,"
"\"autofocus\" INTEGER NOT NULL);");
mDb.exec("INSERT INTO settings VALUES(\"en\",1,1)");
}
QVector<std::shared_ptr<Barcode>> Database::slotGetBarcode(
const QString &barcodeData)
{
QVector<std::shared_ptr<Barcode>> temp;
QSqlQuery query = mDb.exec("SELECT * FROM barcodes WHERE data="
"\"" + barcodeData + "\"");
while(query.next())
{
temp.append(std::make_shared<Barcode>(query.value("id").toInt(),
query.value("data").toString(),
QDateTime::fromTime_t(
query.value("datetime").toUInt()),
query.value("computer").toString()));
}
return temp;
}
std::shared_ptr<Settings> Database::getSettings()
{
QSqlQuery query = mDb.exec("SELECT * FROM settings");
query.next();
return std::make_shared<Settings>(query.value("lang").toString(),
query.value("autofocus").toBool(),
query.value("showComputerNames").toBool());
}
void Database::slotSetSettings(std::shared_ptr<Settings> settings)
{
mDb.exec("UPDATE settings SET lang=\"" + settings->getLang() + "\""
+ ", autofocus=" + QString::number(settings->getAutoFocus()) +
", showComputerNames=" + QString::number(
settings->getShowComputerNames()));
}
std::shared_ptr<Settings> Database::slotGetSettings()
{
return getSettings();
}
void Database::slotDeleteAllBarcodes()
{
mDb.exec("DELETE FROM barcodes");
}
void Database::slotSaveBarcode(const QString& barcodeData)
{
QString time = QString::number(QDateTime::currentDateTime().toTime_t());
mDb.exec("INSERT INTO barcodes(data,datetime,computer) VALUES('" + barcodeData
+ "', " + time + ",'" + QHostInfo::localHostName() + "');");
}
QVector<QString> Database::slotGetAllBarcodeNames()
{
QVector<QString> temp;
QSqlQuery query = mDb.exec("SELECT DISTINCT data FROM barcodes");
while(query.next())
{
temp.append(query.value("data").toString());
}
return temp;
}
void Database::slotDeleteBarcode(const QString &barcode)
{
mDb.exec("DELETE FROM barcodes WHERE data=\"" + barcode + "\"");
}
void Database::slotDeleteData(int id)
{
mDb.exec("DELETE FROM barcodes WHERE id=" + QString::number(id));
}