Mercurial > dedupe
view SqliteDBLink.hpp @ 96:c7da835ea912
Support for prefix in commit.
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Tue, 22 Oct 2013 14:40:08 +0200 |
| parents | 93981e675d67 |
| children | 6c6f3a5f96ea |
line wrap: on
line source
#ifndef SQLITEDBLINK_HPP #define SQLITEDBLINK_HPP #include "FileDBLink.hpp" #include <QtSql/QSqlDatabase> #include <QtCore/QPair> #include <QtCore/QVariant> class SqliteDBLink : public FileDBLink { public: SqliteDBLink(const QString& dbpath); ~SqliteDBLink(); virtual void addFile(const QString& path, quint64 size, const QDateTime& dtime, const QByteArray& hash, bool lazy = false); virtual void updateFile(const QString& path, quint64 size, const QDateTime& dtime, const QByteArray& hash, bool lazy = false); bool exists(const QString& path); DBStatus existsWithMtime(const QString& path, const QDateTime& mtime); virtual const QList<dbinf_ptr_t> filesWithSize(quint64 size, const QString& prefix = QString()) const; QStringList toStringList(); const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const; virtual void keepOnlyFromPrefix(const QString& prefix, const QStringList& files); virtual void deleteFileFromDB(const QString& path); bool commit(const QString& prefix = QString() ); private: typedef enum {None = 0, Add, Update } OperationType; typedef QPair<DBInfo, OperationType> Operation; void addFile(const DBInfo& info, bool lazy = false); bool tryAddFile(const DBInfo& info); void updateFile(const DBInfo& dbinfo, bool lazy = false); QSqlDatabase db; static const QString connectionName; QSqlQuery* preparedSizePrefixQuery; QSqlQuery* preparedSizeQuery; QSqlQuery* preparedTryAddQuery; QSqlQuery* preparedUpdateQuery; QList<Operation> operations; void executeOperation(QVariantList& paths, QVariantList& sizes, QVariantList& mtimes, QVariantList& checksums, OperationType operation); }; #endif //MEMORYDBLINK_HPP
