#pragma once #include "fwd.hpp" #include #include #include struct KnowledgeId { size_t id; }; class KnowledgeFragment { private: QDateTime mCreateTime; QDateTime mModifyTime; KnowledgeId mId; public: KnowledgeFragment(KnowledgeId id); KnowledgeId getId() const; }; class KnowledgeDatabase { private: std::vector mStorage; std::vector mIndex; // Mapping from KnowledgeId (index) to `storage` index KnowledgeId mNextId; public: KnowledgeId allocateFragment(); bool deleteFragment(KnowledgeId id); KnowledgeFragment* getFragment(KnowledgeId id); };