Add factory builder methods for BonsaiTagMapping

Summary: `BonsaiTagMapping` exists as a facet so let's add the appropriate builder methods in `RepoFactory` and `TestRepoFactory`. Follow-up diffs will add this new facet in the `Repo` facet container for `SCS` (for `remote-gitimport`) and in `gitimport`.

Differential Revision: D46020528

fbshipit-source-id: 88e65a498355bf21edc8c8d8aa3755a5507fe991
This commit is contained in:
Rajiv Sharma 2023-05-24 07:11:26 -07:00 committed by Facebook GitHub Bot
parent d3afd74c9a
commit 3c830eaeb0
4 changed files with 36 additions and 0 deletions

View File

@ -18,6 +18,7 @@ bonsai_git_mapping = { version = "0.1.0", path = "../bonsai_git_mapping" }
bonsai_globalrev_mapping = { version = "0.1.0", path = "../bonsai_globalrev_mapping" }
bonsai_hg_mapping = { version = "0.1.0", path = "../bonsai_hg_mapping" }
bonsai_svnrev_mapping = { version = "0.1.0", path = "../bonsai_svnrev_mapping" }
bonsai_tag_mapping = { version = "0.1.0", path = "../bonsai_tag_mapping" }
bookmarks = { version = "0.1.0", path = "../bookmarks" }
cacheblob = { version = "0.1.0", path = "../blobstore/cacheblob" }
cachelib = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" }

View File

@ -43,6 +43,8 @@ use bonsai_hg_mapping::SqlBonsaiHgMappingBuilder;
use bonsai_svnrev_mapping::ArcBonsaiSvnrevMapping;
use bonsai_svnrev_mapping::CachingBonsaiSvnrevMapping;
use bonsai_svnrev_mapping::SqlBonsaiSvnrevMappingBuilder;
use bonsai_tag_mapping::ArcBonsaiTagMapping;
use bonsai_tag_mapping::SqlBonsaiTagMappingBuilder;
use bookmarks::bookmark_heads_fetcher;
use bookmarks::ArcBookmarkUpdateLog;
use bookmarks::ArcBookmarks;
@ -565,6 +567,9 @@ pub enum RepoFactoryError {
#[error("Error opening bonsai-svnrev mapping")]
BonsaiSvnrevMapping,
#[error("Error opening bonsai-tag mapping")]
BonsaiTagMapping,
#[error("Error opening pushrebase mutation mapping")]
PushrebaseMutationMapping,
@ -816,6 +821,20 @@ impl RepoFactory {
}
}
pub async fn bonsai_tag_mapping(
&self,
repo_config: &ArcRepoConfig,
repo_identity: &ArcRepoIdentity,
) -> Result<ArcBonsaiTagMapping> {
let bonsai_tag_mapping = self
.open_sql::<SqlBonsaiTagMappingBuilder>(repo_config)
.await
.context(RepoFactoryError::BonsaiTagMapping)?
.build(repo_identity.id());
// Caching is not enabled for now, but can be added later if required.
Ok(Arc::new(bonsai_tag_mapping))
}
pub async fn pushrebase_mutation_mapping(
&self,
repo_config: &ArcRepoConfig,

View File

@ -17,6 +17,7 @@ bonsai_git_mapping = { version = "0.1.0", path = "../../bonsai_git_mapping" }
bonsai_globalrev_mapping = { version = "0.1.0", path = "../../bonsai_globalrev_mapping" }
bonsai_hg_mapping = { version = "0.1.0", path = "../../bonsai_hg_mapping" }
bonsai_svnrev_mapping = { version = "0.1.0", path = "../../bonsai_svnrev_mapping" }
bonsai_tag_mapping = { version = "0.1.0", path = "../../bonsai_tag_mapping" }
bookmarks = { version = "0.1.0", path = "../../bookmarks" }
cacheblob = { version = "0.1.0", path = "../../blobstore/cacheblob" }
changeset_fetcher = { version = "0.1.0", path = "../../blobrepo/changeset_fetcher" }

View File

@ -24,6 +24,8 @@ use bonsai_hg_mapping::ArcBonsaiHgMapping;
use bonsai_hg_mapping::SqlBonsaiHgMappingBuilder;
use bonsai_svnrev_mapping::ArcBonsaiSvnrevMapping;
use bonsai_svnrev_mapping::SqlBonsaiSvnrevMappingBuilder;
use bonsai_tag_mapping::ArcBonsaiTagMapping;
use bonsai_tag_mapping::SqlBonsaiTagMappingBuilder;
use bookmarks::bookmark_heads_fetcher;
use bookmarks::ArcBookmarkUpdateLog;
use bookmarks::ArcBookmarks;
@ -262,6 +264,7 @@ impl TestRepoFactory {
metadata_con.execute_batch(SqlBonsaiGitMappingBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlBonsaiGlobalrevMappingBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlBonsaiSvnrevMappingBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlBonsaiTagMappingBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlBonsaiHgMappingBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlPhasesBuilder::CREATION_QUERY)?;
metadata_con.execute_batch(SqlPushrebaseMutationMappingConnection::CREATION_QUERY)?;
@ -483,6 +486,18 @@ impl TestRepoFactory {
))
}
/// Construct Bonsai Tag Mapping using the in-memory metadata
/// database.
pub fn bonsai_tag_mapping(
&self,
repo_identity: &ArcRepoIdentity,
) -> Result<ArcBonsaiTagMapping> {
Ok(Arc::new(
SqlBonsaiTagMappingBuilder::from_sql_connections(self.metadata_db.clone())
.build(repo_identity.id()),
))
}
/// Construct Pushrebase Mutation Mapping using the in-memory metadata
/// database.
pub fn pushrebase_mutation_mapping(