File indexing completed on 2024-04-14 03:49:41

0001 /*
0002     This file is part of the KDE Baloo project.
0003     SPDX-FileCopyrightText: 2015 Vishesh Handa <vhanda@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #ifndef BALOO_DOCUMENTURLDB_H
0009 #define BALOO_DOCUMENTURLDB_H
0010 
0011 #include "idtreedb.h"
0012 #include "idfilenamedb.h"
0013 #include "idutils.h"
0014 
0015 #include <QDebug>
0016 #include <QFile>
0017 
0018 namespace Baloo {
0019 
0020 class PostingIterator;
0021 
0022 class BALOO_ENGINE_EXPORT DocumentUrlDB
0023 {
0024 public:
0025     explicit DocumentUrlDB(MDB_dbi idTreeDb, MDB_dbi idFileNameDb, MDB_txn* txn);
0026     ~DocumentUrlDB();
0027 
0028     /**
0029      * Returns true if added
0030      */
0031     bool put(quint64 docId, quint64 parentId, const QByteArray& fileName);
0032     bool addPath(const QByteArray& url);
0033 
0034     QByteArray get(quint64 docId) const;
0035     QVector<quint64> getChildren(quint64 docId) const;
0036     bool contains(quint64 docId) const;
0037 
0038     /**
0039      * Move the document \p id to directory \p newParentId, set its name
0040      * to \p newName.
0041      */
0042     void updateUrl(quint64 id, quint64 newParentId, const QByteArray& newName);
0043 
0044     void del(quint64 docId);
0045 
0046     quint64 getId(quint64 docId, const QByteArray& fileName) const;
0047 
0048     PostingIterator* iter(quint64 docId) {
0049         IdTreeDB db(m_idTreeDbi, m_txn);
0050         return db.iter(docId);
0051     }
0052 
0053     QMap<quint64, QByteArray> toTestMap() const;
0054 
0055 private:
0056     BALOO_ENGINE_NO_EXPORT void add(quint64 id, quint64 parentId, const QByteArray& name);
0057 
0058     MDB_txn* m_txn;
0059     MDB_dbi m_idFilenameDbi;
0060     MDB_dbi m_idTreeDbi;
0061 
0062 };
0063 
0064 }
0065 
0066 #endif // BALOO_DOCUMENTURLDB_H