MCPcopy Create free account
hub / github.com/emwalker/digraph / persist_links

Function persist_links

backend/src/bin/export.rs:493–522  ·  view source on GitHub ↗
(
    mutation: &mut Mutation,
    repo_link_repo_id: RepoId,
    repo_link_meta: &LinkMetadataRow,
    parent_topics: &Vec<ParentTopicRow>,
)

Source from the content-addressed store, hash-verified

491}
492
493fn persist_links(
494 mutation: &mut Mutation,
495 repo_link_repo_id: RepoId,
496 repo_link_meta: &LinkMetadataRow,
497 parent_topics: &Vec<ParentTopicRow>,
498) -> Result<()> {
499 let repo_link = RepoLink {
500 api_version: API_VERSION.to_string(),
501 metadata: RepoLinkMetadata::try_from(repo_link_meta).unwrap(),
502 parent_topics: BTreeSet::new(),
503 };
504
505 let mut repo_links = RepoLinks::new(repo_link_repo_id, repo_link);
506
507 for parent in parent_topics {
508 let parent_repo_id = RepoId::try_from(&parent.repository_id).unwrap();
509 let repo_id = prefer_private_repo(repo_link_repo_id, parent_repo_id);
510 let reference = repo_links.get_mut(repo_id);
511 reference.parent_topics.insert(parent.try_into().unwrap());
512 }
513
514 let repo_ids = repo_links.links.keys().cloned().collect::<Vec<RepoId>>();
515
516 for repo_id in repo_ids {
517 let link = repo_links.get_mut(repo_id);
518 persist_link(mutation, repo_id, link, parent_topics).unwrap();
519 }
520
521 Ok(())
522}
523
524async fn export_links(mutation: &mut Mutation, pool: &PgPool) -> Result<()> {
525 log::info!("saving link blobs");

Callers 1

export_linksFunction · 0.85

Calls 5

prefer_private_repoFunction · 0.85
persist_linkFunction · 0.85
get_mutMethod · 0.80
insertMethod · 0.80
try_intoMethod · 0.45

Tested by

no test coverage detected