mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
Return Arc instead of reference
Summary: For context and high level goal, see: https://fb.quip.com/8zOkAQRiXGQ3 On RedactedBlobs, let's return an `Arc<HashMap>` instead of `&Hashmap`. This is not needed now, but when reloading information from configerator, we won't be able to return a reference, only a pointer. Reviewed By: StanislavGlebik Differential Revision: D28962040 fbshipit-source-id: 0848acc1a81a87c0b51d968efe31f61dacd57c47
This commit is contained in:
parent
f0a287580e
commit
73212fc9bf
@ -250,6 +250,7 @@ mod test {
|
||||
use maplit::hashmap;
|
||||
use memblob::Memblob;
|
||||
use prefixblob::PrefixBlobstore;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[fbinit::test]
|
||||
async fn test_redacted_key(fb: FacebookInit) {
|
||||
@ -261,12 +262,12 @@ mod test {
|
||||
borrowed!(ctx);
|
||||
|
||||
let inner = Memblob::default();
|
||||
let redacted_pairs = RedactedBlobs::FromSql(hashmap! {
|
||||
let redacted_pairs = RedactedBlobs::FromSql(Arc::new(hashmap! {
|
||||
redacted_key.to_owned() => RedactedMetadata {
|
||||
task: redacted_task.to_owned(),
|
||||
log_only: false,
|
||||
},
|
||||
});
|
||||
}));
|
||||
|
||||
let blob = RedactedBlobstore::new(
|
||||
PrefixBlobstore::new(inner, "prefix"),
|
||||
@ -322,12 +323,12 @@ mod test {
|
||||
borrowed!(ctx);
|
||||
|
||||
let inner = Memblob::default();
|
||||
let redacted_pairs = RedactedBlobs::FromSql(hashmap! {
|
||||
let redacted_pairs = RedactedBlobs::FromSql(Arc::new(hashmap! {
|
||||
redacted_log_only_key.to_owned() => RedactedMetadata {
|
||||
task: redacted_task.to_owned(),
|
||||
log_only: true,
|
||||
},
|
||||
});
|
||||
}));
|
||||
|
||||
let blob = RedactedBlobstore::new(
|
||||
PrefixBlobstore::new(inner, "prefix"),
|
||||
|
@ -12,6 +12,7 @@ use sql::{queries, Connection};
|
||||
use sql_construct::{SqlConstruct, SqlConstructFromMetadataDatabaseConfig};
|
||||
use sql_ext::SqlConnections;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct SqlRedactedContentStore {
|
||||
@ -70,13 +71,13 @@ pub struct RedactedMetadata {
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum RedactedBlobs {
|
||||
FromSql(HashMap<String, RedactedMetadata>),
|
||||
FromSql(Arc<HashMap<String, RedactedMetadata>>),
|
||||
}
|
||||
|
||||
impl RedactedBlobs {
|
||||
pub fn redacted(&self) -> &HashMap<String, RedactedMetadata> {
|
||||
pub fn redacted(&self) -> Arc<HashMap<String, RedactedMetadata>> {
|
||||
match self {
|
||||
Self::FromSql(hm) => &hm,
|
||||
Self::FromSql(hm) => hm.clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -84,7 +85,7 @@ impl RedactedBlobs {
|
||||
impl SqlRedactedContentStore {
|
||||
pub async fn get_all_redacted_blobs(&self) -> Result<RedactedBlobs, Error> {
|
||||
let redacted_blobs = GetAllRedactedBlobs::query(&self.read_connection).await?;
|
||||
Ok(RedactedBlobs::FromSql(
|
||||
Ok(RedactedBlobs::FromSql(Arc::new(
|
||||
redacted_blobs
|
||||
.into_iter()
|
||||
.map(|(key, task, log_only)| {
|
||||
@ -95,7 +96,7 @@ impl SqlRedactedContentStore {
|
||||
(key, redacted_metadata)
|
||||
})
|
||||
.collect(),
|
||||
))
|
||||
)))
|
||||
}
|
||||
|
||||
pub async fn insert_redacted_blobs(
|
||||
|
@ -1037,12 +1037,12 @@ mod test {
|
||||
|
||||
// Now, create a new blob repo with the same blob store, but with some data redacted.
|
||||
let repo = factory
|
||||
.redacted(Some(RedactedBlobs::FromSql(hashmap! {
|
||||
.redacted(Some(RedactedBlobs::FromSql(Arc::new(hashmap! {
|
||||
meta.content_id.blobstore_key() => RedactedMetadata {
|
||||
task: "test".to_string(),
|
||||
log_only: false,
|
||||
}
|
||||
})))
|
||||
}))))
|
||||
.build()?;
|
||||
|
||||
let ctx = RepositoryRequestContext::test_builder(fb)?
|
||||
|
@ -218,6 +218,7 @@ mod test {
|
||||
use mononoke_types_mocks::contentid::ONES_CTID;
|
||||
use permission_checker::MononokeIdentity;
|
||||
use redactedblobstore::{RedactedBlobs, RedactedMetadata};
|
||||
use std::sync::Arc;
|
||||
use test_repo_factory::TestRepoFactory;
|
||||
|
||||
#[fbinit::test]
|
||||
@ -226,12 +227,12 @@ mod test {
|
||||
let reason = "test reason";
|
||||
|
||||
let repo = TestRepoFactory::new()?
|
||||
.redacted(Some(RedactedBlobs::FromSql(
|
||||
.redacted(Some(RedactedBlobs::FromSql(Arc::new(
|
||||
hashmap! { content_id.blobstore_key() => RedactedMetadata {
|
||||
task: reason.to_string(),
|
||||
log_only: false,
|
||||
}},
|
||||
)))
|
||||
))))
|
||||
.build()?;
|
||||
|
||||
let ctx = RepositoryRequestContext::test_builder(fb)?
|
||||
|
Loading…
Reference in New Issue
Block a user