ImagingTools Core SDK
CDocumentTable.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ImtCore includes
6#include <imtmdbx/IDocumentTable.h>
7
8// 3rdParty includes
9#include <mdbx.h++>
10
11
12namespace imtmdbx
13{
14
15
16class CDocumentTable: virtual public IDocumentTable
17{
18public:
19 CDocumentTable(
20 const QString& name,
21 mdbx::txn_managed& txn,
22 mdbx::key_mode keyMode = mdbx::key_mode::reverse,
23 mdbx::value_mode valueMode = mdbx::value_mode::single,
24 bool hasIndex = false);
25 ~CDocumentTable();
26
27 // reimplemented (imtmdbx::IDocumentTable)
28 virtual quint64 AddDocument(const QByteArray& data) override;
29 virtual quint64 AddDocument(quint64 data) override;
30 virtual quint64 AddDocument(const QByteArray& key, const QByteArray& data) override;
31 virtual QByteArray GetDocument() override;
32 virtual QByteArray GetDocument(quint64 key) override;
33 virtual QByteArray GetDocument(const QByteArray& key) override;
34 virtual bool GetKey(quint64& key) const override;
35 virtual bool GetKey(QByteArray& key) const override;
36 virtual bool HasRecord(quint64 key) override;
37 virtual bool HasRecord(const QByteArray& key) override;
38 virtual bool UpdateDocument(quint64 key, const QByteArray& data) override;
39 virtual bool UpdateDocument(const QByteArray& key, const QByteArray& data) override;
40 virtual bool GetKey(quint64& key, const QByteArray& value = QByteArray()) override;
41 virtual bool GetFirstKey(quint64& key) override;
42 virtual bool GetLastKey(quint64& key) override;
43 virtual QByteArray GetKeyBA(const QByteArray& value = QByteArray()) override;
44 virtual bool CreateIndex() override;
45 virtual bool MoveTo(quint64 key) override;
46 virtual bool MoveTo(const QByteArray& key) override;
47 virtual bool MoveToFirst() override;
48 virtual bool MoveToLast() override;
49 virtual bool MoveToLowerBound(quint64 key) override;
50 virtual bool MoveToLowerBound(const QByteArray& key) override;
51 virtual bool MoveToUpperBound(quint64 key) override;
52 virtual bool MoveToUpperBound(const QByteArray& key) override;
53 virtual bool MoveToNext() override;
54 virtual bool MoveToPrevious() override;
55 virtual bool MoveToValue(const QByteArray& value) override;
56 virtual bool RemoveDocument() override;
57 virtual bool RemoveDocument(quint64 key, const QByteArray& value = QByteArray()) override;
58 virtual bool RemoveDocument(const QByteArray& key, const QByteArray& value = QByteArray()) override;
59
60 bool CloseTable(mdbx::env_managed& env);
61
62protected:
63 virtual quint64 AddDocument(
64 const char *data,
65 int count,
66 const QByteArray& keyStr = QByteArray());
67 virtual bool UpdateDocument(
68 const char *key,
69 int count,
70 const QByteArray& data);
71 virtual bool Exists(const QString& name);
72
73protected:
74 QString m_tableName;
75 mdbx::txn_managed& m_txn;
76 mdbx::cursor_managed m_cursor;
77 mdbx::map_handle m_mapHandle;
78 mdbx::cursor_managed m_cursorIndex;
79 mdbx::map_handle m_mapHandleIndex;
80 mdbx::key_mode m_keyMode;
81 mdbx::value_mode m_valueMode;
82 bool m_hasIndex;
83};
84
85
86} // namespace imtmdbx
87