-
Notifications
You must be signed in to change notification settings - Fork 0
/
database.h
68 lines (58 loc) · 2.1 KB
/
database.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
#ifndef DATABASE_H
#define DATABASE_H
#include <QSqlDatabase>
#include <QString>
#include <QSqlQuery>
#include <QVariant>
#include <QList>
#include <QSqlRecord>
#include <QDebug>
#include "filetuple.h"
#include "tagtuple.h"
#include "tagnamenotfoundexception.h"
class Database
{
public:
static Database* getInstance();
int addFile(const QString& name, const QString& path, const QString& type);
void removeFile(const int& id);
QList<FileTuple> getAllFiles();
QList<FileTuple> getFilesThatMatchTags(QList<int> tagIds, QList<int> excludeTagIds);
void addTagToFile(const QString& tag, const int& fileId);
void addTag(const QString& tag);
QList<TagTuple> getTagsOfFile(const int& fileId);
void removeTagFromFile(const int& tagId, const int& fileId);
int getIdOfTag(const QString& tag);
QList<TagTuple> getTuplesOfTags(QList<int> tagIds);
QStringList getAllTagNames();
QStringList getAllTagNamesExcludingSpecial();
bool filePathExists(const QString& path);
bool isSpecialTag(const QString& tag);
bool fileHasTag(const int& fileId, const QString& tag);
void setThumbnail(const QString& path, const int& fileId);
void setPath(const QString& path, const int& fileId);
void setFileName(const QString& name, const int& fileId);
void debug_outputContentsOfTagTable();
protected:
Database();
private:
static Database* instance;
void connect();
void createTablesIfTheyDontExist();
void createAndPopulateTypeTableIfDoesntExist();
void createTypeTableIfDoesntExist();
void populateTypeTable();
void createFileTableIfDoesntExist();
void createTagTableIfDoesntExist();
void addSpecialTags();
void createFileTagTableIfDoesntExist();
int getIdOfType(const QString& type);
void removeTagsFromFile(const int& id);
void removeUnusedTags();
void giveFileInitialSpecialTags(const int& fileId);
void applyUntaggedIfAppropriate(const int& fileId);
QString getFileType(const int& fileId);
void removeUntaggedIfAppropriate(const int& fileId);
bool fileHasNonSpecialTags(const int& fileId);
};
#endif // DATABASE_H