Files
ylib/include/util/localstorage.h
2024-06-01 16:36:25 +08:00

79 lines
1.6 KiB
C++

#pragma once
#include <string>
#include <vector>
#include "util/json.h"
#include "util/counter.hpp"
#include "base/error.h"
namespace leveldb
{
class DB;
}
namespace ylib
{
/// <summary>
/// 本地存储(LevelDB)
/// </summary>
class local_storage:public ylib::error_base
{
public:
local_storage();
~local_storage();
/// <summary>
/// 打开
/// </summary>
/// <param name="dirpath">目录</param>
/// <returns></returns>
bool open(const std::string& dirpath);
/// <summary>
/// 关闭
/// </summary>
void close();
/// <summary>
/// 清空数据库
/// </summary>
void clear();
/// <summary>
/// 写
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
/// <returns></returns>
bool write(const std::string& name,const std::string& value);
/// <summary>
/// 读
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
/// <returns></returns>
bool read(const std::string& name, std::string& value);
/// <summary>
/// 删除
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
bool del(const std::string& name);
/// <summary>
/// 是否存在
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
bool exist(const std::string& name);
/// <summary>
/// [测试] 生成GUID
/// </summary>
/// <returns></returns>
std::string test_make_guid();
private:
// 目录
std::string m_dirpath;
// DB指针
leveldb::DB* m_db = nullptr;
// GUID索引器
ylib::counter<uint32> m_guid_counter;
};
}