5#include "../SqlConnection.hpp"
7#include "SqlBackup.hpp"
21 #pragma clang diagnostic push
22 #pragma clang diagnostic ignored "-Wnullability-extension"
26 #pragma clang diagnostic pop
29namespace Lightweight::SqlBackup::detail
33struct RestoreChunkInfo
35 std::string tableName;
36 std::string chunkPath;
37 std::vector<uint8_t> content;
38 TableInfo
const* tableInfo {};
39 std::optional<size_t> displayTotal;
40 bool isEndOfStream {};
46 std::string tableName;
53 SqlConnectionString connectionString;
55 std::map<std::string, TableInfo>
const& tableMap;
56 std::deque<ZipEntryInfo>& dataQueue;
58 std::mutex& queueMutex;
59 std::mutex& fileMutex;
60 ProgressManager& progress;
61 std::map<std::string, std::shared_ptr<std::atomic<size_t>>> tableProgress;
62 std::map<std::string, std::shared_ptr<std::atomic<size_t>>> chunksProcessed;
63 std::map<std::string, size_t> totalChunks;
64 std::map<std::string, std::string>
const* checksums;
65 RetrySettings
const& retrySettings;
66 RestoreSettings restoreSettings;
74void IncrementChunkCounter(RestoreContext& ctx, std::string
const& tableName,
bool success);
83std::expected<RestoreChunkInfo, FetchChunkError> FetchNextRestoreChunk(RestoreContext& ctx);
95bool RestoreChunkData(RestoreContext& ctx, SqlConnection& workerConn, RestoreChunkInfo
const& chunk,
size_t batchCapacity);
104void RestoreWorker(RestoreContext ctx, SqlConnection& workerConn);
116void RestoreIndexes(SqlConnectionString
const& connectionString,
117 std::string
const& schema,
118 std::map<std::string, TableInfo>
const& tableMap,
119 ProgressManager& progress);
130void ApplyDatabaseConstraints(SqlConnectionString
const& connectionString,
131 std::string
const& schema,
132 std::map<std::string, TableInfo>
const& tableMap,
133 ProgressManager& progress);
147std::set<std::string> RecreateDatabaseSchema(SqlConnectionString
const& connectionString,
148 std::string
const& schema,
149 std::map<std::string, TableInfo>
const& tableMap,
150 ProgressManager& progress);