Skip to content

Commit

Permalink
Store OpHeadsStore in UnpublishedOperation instead of RepoLoader
Browse files Browse the repository at this point in the history
The only thing we need from the `RepoLoader` is the `OpHeadsStore`, so we can
extract it in UnpublishedOperation::new instead of keeping the entire
`RepoLoader` around.
  • Loading branch information
emesterhazy committed Mar 2, 2024
1 parent 61255a5 commit d9b0317
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions lib/src/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use itertools::Itertools as _;

use crate::backend::Timestamp;
use crate::index::ReadonlyIndex;
use crate::op_heads_store::OpHeadsStore;
use crate::op_store::OperationMetadata;
use crate::operation::Operation;
use crate::repo::{MutableRepo, ReadonlyRepo, Repo, RepoLoader, RepoLoaderError};
Expand Down Expand Up @@ -149,7 +150,7 @@ pub fn create_op_metadata(

#[must_use = "Either publish() or leave_unpublished() must be called on UnpublishedOperation."]
pub struct UnpublishedOperation {
repo_loader: RepoLoader,
op_heads_store: Arc<dyn OpHeadsStore>,
repo: Arc<ReadonlyRepo>,
}

Expand All @@ -161,7 +162,7 @@ impl UnpublishedOperation {
index: Box<dyn ReadonlyIndex>,
) -> Self {
UnpublishedOperation {
repo_loader,
op_heads_store: repo_loader.op_heads_store().clone(),
repo: repo_loader.create_from(operation, view, index),
}
}
Expand All @@ -171,9 +172,8 @@ impl UnpublishedOperation {
}

pub fn publish(self) -> Arc<ReadonlyRepo> {
let _lock = self.repo_loader.op_heads_store().lock();
self.repo_loader
.op_heads_store()
let _lock = self.op_heads_store.lock();
self.op_heads_store
.update_op_heads(self.operation().parent_ids(), self.operation().id());
self.repo
}
Expand Down

0 comments on commit d9b0317

Please sign in to comment.