Mercurial > dedupe
comparison SqliteDBLink.hpp @ 101:6c6f3a5f96ea
Better support for batch operations.
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Thu, 13 Feb 2014 15:19:37 +0100 |
| parents | c7da835ea912 |
| children | 6bc013d5788b |
comparison
equal
deleted
inserted
replaced
| 100:f4ebbfa3ffae | 101:6c6f3a5f96ea |
|---|---|
| 24 | 24 |
| 25 | 25 |
| 26 QStringList toStringList(); | 26 QStringList toStringList(); |
| 27 const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const; | 27 const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const; |
| 28 virtual void keepOnlyFromPrefix(const QString& prefix, | 28 virtual void keepOnlyFromPrefix(const QString& prefix, |
| 29 const QStringList& files); | 29 const QStringList& files, |
| 30 virtual void deleteFileFromDB(const QString& path); | 30 bool lazy = false); |
| 31 virtual void deleteFileFromDB(const QString& path, bool lazy = false); | |
| 31 bool commit(const QString& prefix = QString() ); | 32 bool commit(const QString& prefix = QString() ); |
| 32 | 33 |
| 33 private: | 34 private: |
| 34 typedef enum {None = 0, Add, Update } OperationType; | 35 typedef enum {None = 0, Add, Update, Delete } OperationType; |
| 35 typedef QPair<DBInfo, OperationType> Operation; | 36 static const char* typeString(OperationType); |
| 37 | |
| 38 //typedef QPair<DBInfo, OperationType> Operation; | |
| 39 class Operation { | |
| 40 public: | |
| 41 virtual OperationType type() const = 0; | |
| 42 }; | |
| 43 | |
| 44 class InfoOperation: public Operation { | |
| 45 private: | |
| 46 DBInfo _info; | |
| 47 public: | |
| 48 InfoOperation(const DBInfo&info) { | |
| 49 this->_info=info; | |
| 50 } | |
| 51 const DBInfo& info() const { | |
| 52 return _info; | |
| 53 } | |
| 54 }; | |
| 55 | |
| 56 class UpdateOperation: public InfoOperation { | |
| 57 public: | |
| 58 UpdateOperation(const DBInfo&info) : InfoOperation(info) {} | |
| 59 | |
| 60 OperationType type() const | |
| 61 { | |
| 62 return Update; | |
| 63 } | |
| 64 }; | |
| 65 | |
| 66 class AddOperation: public InfoOperation { | |
| 67 public: | |
| 68 AddOperation(const DBInfo&info) : InfoOperation(info) {} | |
| 69 | |
| 70 OperationType type() const | |
| 71 { | |
| 72 return Add; | |
| 73 } | |
| 74 }; | |
| 75 | |
| 76 class DeleteOperation: public Operation { | |
| 77 private: | |
| 78 QString _path; | |
| 79 public: | |
| 80 DeleteOperation(const QString& path) { | |
| 81 _path=path; | |
| 82 } | |
| 83 OperationType type() const | |
| 84 { | |
| 85 return Delete; | |
| 86 } | |
| 87 const QString& path() const { | |
| 88 return _path; | |
| 89 } | |
| 90 }; | |
| 36 | 91 |
| 37 void addFile(const DBInfo& info, bool lazy = false); | 92 void addFile(const DBInfo& info, bool lazy = false); |
| 38 bool tryAddFile(const DBInfo& info); | 93 bool tryAddFile(const DBInfo& info); |
| 39 void updateFile(const DBInfo& dbinfo, bool lazy = false); | 94 void updateFile(const DBInfo& dbinfo, bool lazy = false); |
| 40 | 95 |
| 43 | 98 |
| 44 QSqlQuery* preparedSizePrefixQuery; | 99 QSqlQuery* preparedSizePrefixQuery; |
| 45 QSqlQuery* preparedSizeQuery; | 100 QSqlQuery* preparedSizeQuery; |
| 46 QSqlQuery* preparedTryAddQuery; | 101 QSqlQuery* preparedTryAddQuery; |
| 47 QSqlQuery* preparedUpdateQuery; | 102 QSqlQuery* preparedUpdateQuery; |
| 48 QList<Operation> operations; | 103 QSqlQuery* preparedDeleteQuery; |
| 104 QList<Operation*> operations; | |
| 49 void executeOperation(QVariantList& paths, QVariantList& sizes, | 105 void executeOperation(QVariantList& paths, QVariantList& sizes, |
| 50 QVariantList& mtimes, QVariantList& checksums, | 106 QVariantList& mtimes, QVariantList& checksums, |
| 51 OperationType operation); | 107 OperationType operation); |
| 52 }; | 108 }; |
| 53 | 109 |
