|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <optional>
|
|
|
|
|
|
|
|
|
|
|
|
struct ActionRecord
|
|
|
|
|
|
{
|
|
|
|
|
|
int64_t id;
|
|
|
|
|
|
std::string uuid;
|
|
|
|
|
|
std::string classType;
|
|
|
|
|
|
std::string type; // "redo" "undo" <20><>ʾ<EFBFBD><CABE> redo <20><><EFBFBD><EFBFBD> undo <20>б<EFBFBD><D0B1><EFBFBD>
|
|
|
|
|
|
std::vector<char> data;
|
|
|
|
|
|
std::string timestamp;
|
|
|
|
|
|
std::string createAt;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct FileData
|
|
|
|
|
|
{
|
|
|
|
|
|
FileData()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FileData(int64_t id, std::string filepath, std::vector<char> data, std::string createAt)
|
|
|
|
|
|
{
|
|
|
|
|
|
this->id = id;
|
|
|
|
|
|
this->filepath = filepath;
|
|
|
|
|
|
this->data = data;
|
|
|
|
|
|
this->createAt = createAt;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int64_t id;
|
|
|
|
|
|
std::string filepath;
|
|
|
|
|
|
std::vector<char> data;
|
|
|
|
|
|
std::string createAt;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// ԭʼͼ<CABC><CDBC><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>洢<EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
|
class IActionStorage
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual ~IActionStorage() = default;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param fileData ԭʼ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>¼
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual bool InsertFileData(const std::string& filePath, FileData& fileData) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡԭʼ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return ԭʼ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>¼
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual std::optional<FileData> RetrieveFileData(const std::string& filePath) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual bool ExistsFileData(const std::string& filePath) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* ɾ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD> Action <EFBFBD><EFBFBD>¼
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual void RemoveFileData(const std::string & filePath) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param record <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual bool AddActionRecord(const std::string& filePath, const ActionRecord& record) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param uuid <EFBFBD><EFBFBD><EFBFBD><EFBFBD> uuid
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual bool ExistsActionRecord(const std::string& filePath, const std::string& uuid) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* ͳ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> actioin <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual int ActionRecordCount(const std::string& filePath) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param filePath <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual std::vector<ActionRecord> RetrieveAllActionRecords(const std::string& filePath) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
virtual void ClearBackup(const std::string& path) = 0;
|
|
|
|
|
|
};
|