5#include "../SqlError.hpp"
14namespace Lightweight::detail
18enum class FailureDisposition : std::uint8_t
29struct BatchInsertError
40 std::vector<std::size_t> reportedFailedRows;
45 #pragma warning(disable : 4251)
46 #pragma warning(disable : 4275)
50struct LIGHTWEIGHT_API TableRestoreFailure: std::runtime_error
54 explicit TableRestoreFailure(SqlErrorInfo error);
66using RangeInserter = std::function<std::expected<void, BatchInsertError>(std::size_t firstRow, std::size_t rowCount)>;
69using FailureClassifier = std::function<FailureDisposition(SqlErrorInfo
const&)>;
72using RowFailureSink = std::function<void(std::size_t row, SqlErrorInfo
const&)>;
75using ExcludedRowSink = std::function<void(std::size_t row)>;
78using SettledSink = std::function<void(std::size_t settledPrefix)>;
98LIGHTWEIGHT_API
void InsertIsolatingFailures(std::size_t rowCount,
99 std::vector<bool>
const& excluded,
100 RangeInserter
const& tryInsert,
101 FailureClassifier
const& classify,
102 RowFailureSink
const& onRowFailed,
103 ExcludedRowSink
const& onExcludedRow,
104 SettledSink
const& onSettled);