| """Rollback helpers for table-store transactions.""" | |
| from __future__ import annotations | |
| from pathlib import Path | |
| from dataforge.stores.base import TableStoreError | |
| from dataforge.stores.duckdb import load_duckdb_transaction | |
| from dataforge.transactions.log import load_transaction | |
| from dataforge.transactions.txn import RepairTransaction | |
| def revert_table_store_transaction(log_path: Path) -> RepairTransaction: | |
| """Revert a table-store transaction using its recorded backend patch plan.""" | |
| transaction = load_transaction(log_path) | |
| if transaction.backend == "duckdb": | |
| store, loaded = load_duckdb_transaction(log_path) | |
| store.revert_transaction(loaded, log_path=log_path) | |
| return load_transaction(log_path) | |
| raise TableStoreError( | |
| f"Table-store revert is not implemented for backend {transaction.backend!r}." | |
| ) | |