weavatrix_worktree/transaction/
mod.rs1mod commit;
2mod lock;
3mod plan;
4mod prepare;
5mod recovery;
6mod recovery_model;
7#[cfg(test)]
8mod recovery_tests;
9mod rollback;
10mod stage;
11mod stage_cleanup;
12mod util;
13mod verify;
14
15use crate::{
16 filesystem::ControlDir, journal::JournalWriter, options::WorktreeOptions, report::DryRunReport,
17};
18
19use stage::StagedFile;
20
21#[must_use = "commit, abort, or later recover the prepared transaction"]
23pub struct PreparedTransaction {
24 transaction_id: String,
25 operation: String,
26 preview: DryRunReport,
27 files: Vec<StagedFile>,
28 options: WorktreeOptions,
29 journal: JournalWriter,
30 control: ControlDir,
31 _lock: LockGuard,
32}
33
34impl core::fmt::Debug for PreparedTransaction {
35 fn fmt(&self, formatter: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
36 formatter
37 .debug_struct("PreparedTransaction")
38 .field("transaction_id", &self.transaction_id)
39 .field("operation", &self.operation)
40 .field("prepared_files", &self.files.len())
41 .finish_non_exhaustive()
42 }
43}
44
45impl PreparedTransaction {
46 #[must_use]
47 pub fn transaction_id(&self) -> &str {
48 &self.transaction_id
49 }
50
51 #[must_use]
52 pub const fn preview(&self) -> &DryRunReport {
53 &self.preview
54 }
55}
56
57pub(crate) use lock::{LockGuard, acquire};
58pub(crate) use plan::{dry_run_report, project_plan};
59pub(crate) use prepare::prepare_transaction;
60pub(crate) use recovery::recover_transaction;