git / moonbite-core / src/libmw/include/mw/interfaces/db_interface.h · raw
#pragma once// Copyright (c) 2018-2020 David Burkett// Copyright (c) 2020 The Litecoin Developers// Distributed under the MIT software license, see the accompanying// file LICENSE or http://www.opensource.org/licenses/mit-license.php.#include <mw/common/Macros.h>#include <cstdint>#include <memory>#include <string>#include <vector>MW_NAMESPACEclass DBBatch{public: using UPtr = std::unique_ptr<DBBatch>; virtual ~DBBatch() = default; virtual void Write(const std::string& key, const std::vector<uint8_t>& value) = 0; virtual void Erase(const std::string& key) = 0; virtual void Commit() = 0;};class DBIterator{public: virtual ~DBIterator() = default; virtual void Seek(const std::string& key) = 0; virtual void Next() = 0; virtual bool GetKey(std::string& key) const = 0; virtual bool Valid() const = 0;};class DBWrapper{public: using Ptr = std::shared_ptr<DBWrapper>; virtual ~DBWrapper() = default; virtual bool Read(const std::string& key, std::vector<uint8_t>& value) const = 0; virtual std::unique_ptr<DBIterator> NewIterator() = 0; virtual std::unique_ptr<DBBatch> CreateBatch() = 0;};END_NAMESPACE // mw