Mercurial > dedupe
annotate SqliteDBLink.hpp @ 93:308a718812ba
Small refactoring to allow lazy commits.
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Tue, 22 Oct 2013 11:53:54 +0200 |
| parents | f49023c61dac |
| children | 93981e675d67 |
| rev | line source |
|---|---|
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 #ifndef SQLITEDBLINK_HPP |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 #define SQLITEDBLINK_HPP |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 #include "FileDBLink.hpp" |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 #include <QtSql/QSqlDatabase> |
|
93
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
6 #include <QtCore/QPair> |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
7 |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 class SqliteDBLink : public FileDBLink { |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 public: |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 SqliteDBLink(const QString& dbpath); |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 ~SqliteDBLink(); |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 |
|
86
af7962f3274b
Use quint64 for sizes, rather than qint64.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
85
diff
changeset
|
13 virtual void addFile(const QString& path, quint64 size, |
|
92
f49023c61dac
Support for bulk insertion.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
90
diff
changeset
|
14 const QDateTime& dtime, const QByteArray& hash, |
|
f49023c61dac
Support for bulk insertion.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
90
diff
changeset
|
15 bool lazy = false); |
|
86
af7962f3274b
Use quint64 for sizes, rather than qint64.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
85
diff
changeset
|
16 virtual void updateFile(const QString& path, quint64 size, |
|
92
f49023c61dac
Support for bulk insertion.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
90
diff
changeset
|
17 const QDateTime& dtime, const QByteArray& hash, |
|
f49023c61dac
Support for bulk insertion.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
90
diff
changeset
|
18 bool lazy = false); |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 bool exists(const QString& path); |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 DBStatus existsWithMtime(const QString& path, const QDateTime& mtime); |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 |
|
86
af7962f3274b
Use quint64 for sizes, rather than qint64.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
85
diff
changeset
|
22 virtual const QList<dbinf_ptr_t> filesWithSize(quint64 size, const QString& prefix = QString()) const; |
|
85
1f9e27a0bd7f
Allow for lazy calculation of checksums, ignore them, if only one file of given size.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
81
diff
changeset
|
23 |
|
1f9e27a0bd7f
Allow for lazy calculation of checksums, ignore them, if only one file of given size.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
81
diff
changeset
|
24 |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
25 QStringList toStringList(); |
|
64
b9515dc35fe4
Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
61
diff
changeset
|
26 const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const; |
|
b9515dc35fe4
Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
61
diff
changeset
|
27 virtual void keepOnlyFromPrefix(const QString& prefix, |
|
b9515dc35fe4
Make sure no file has greater linewidth than 80.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
61
diff
changeset
|
28 const QStringList& files); |
|
5
5e4985407feb
Add commandline tool updateDeDupe.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
2
diff
changeset
|
29 virtual void deleteFileFromDB(const QString& path); |
|
93
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
30 bool commit(); |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 private: |
|
93
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
33 typedef enum {Add, Update } OperationType; |
|
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
34 typedef QPair<DBInfo, OperationType> Operation; |
|
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
35 |
|
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
36 void addFile(const DBInfo& info, bool lazy = false); |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 bool tryAddFile(const DBInfo& info); |
|
93
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
38 void updateFile(const DBInfo& dbinfo, bool lazy = false); |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 QSqlDatabase db; |
|
81
69a30d9f126e
Make the DBLink reusable.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
64
diff
changeset
|
41 static const QString connectionName; |
|
88
6e1d4d2fc49b
Prepare size query only once.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
86
diff
changeset
|
42 |
|
6e1d4d2fc49b
Prepare size query only once.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
86
diff
changeset
|
43 QSqlQuery* preparedSizePrefixQuery; |
|
6e1d4d2fc49b
Prepare size query only once.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
86
diff
changeset
|
44 QSqlQuery* preparedSizeQuery; |
|
90
7b7a959c993b
Prepare some more queries.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
88
diff
changeset
|
45 QSqlQuery* preparedTryAddQuery; |
|
93
308a718812ba
Small refactoring to allow lazy commits.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
92
diff
changeset
|
46 QList<Operation> operations; |
|
2
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 }; |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 |
|
2833b7f8884a
Sql backend is working.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 #endif //MEMORYDBLINK_HPP |
