pub struct ProofDB { /* private fields */ }
Expand description
In memory database tracking information from proofs
After population, used for calculating the effective trust set, etc.
Right now, for every invocation of crev, we just load it up with all known proofs, and then query. If it ever becomes too slow, all the logic here will have to be moved to a real embedded db of some kind.
Implementations§
source§impl ProofDB
impl ProofDB
pub fn get_pkg_alternatives( &self, pkg_id: &PackageId ) -> HashSet<(Id, PackageId)>
pub fn get_pkg_flags( &self, pkg_id: &PackageId ) -> impl Iterator<Item = (&Id, &Flags)>
sourcepub fn get_pkg_reviews_for_source<'a>(
&'a self,
source: RegistrySource<'_>
) -> impl Iterator<Item = &'a Package>
pub fn get_pkg_reviews_for_source<'a>( &'a self, source: RegistrySource<'_> ) -> impl Iterator<Item = &'a Package>
Use "https://crates.io"
to get all crates-io reviews
pub fn get_pkg_reviews_for_name<'a, 'b, 'c: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str ) -> impl Iterator<Item = &'a Package>
pub fn get_pkg_reviews_for_version<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, version: &'d Version ) -> impl Iterator<Item = &'a Package>
pub fn get_pkg_reviews_gte_version<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, version: &'d Version ) -> impl Iterator<Item = &'a Package>
pub fn get_pkg_reviews_lte_version<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, version: &'d Version ) -> impl Iterator<Item = &'a Package>
pub fn get_pkg_review_by_pkg_review_id( &self, uniq: &PkgVersionReviewId ) -> Option<&Package>
pub fn get_proof_digest_by_pkg_review_id( &self, uniq: &PkgVersionReviewId ) -> Option<&Digest>
pub fn get_pkg_review<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, version: &'d Version, id: &Id ) -> Option<&Package>
pub fn get_advisories<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: Option<&'c str>, version: Option<&'d Version> ) -> impl Iterator<Item = &'a Package> + 'a
pub fn get_pkg_reviews_with_issues_for<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: Option<&'c str>, version: Option<&'c Version>, trust_set: &'d TrustSet, trust_level_required: TrustLevel ) -> impl Iterator<Item = &Package>
pub fn get_advisories_for_version<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, version: &'d Version ) -> impl Iterator<Item = &Package>
pub fn get_advisories_for_package<'a, 'b, 'c: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str ) -> impl Iterator<Item = &Package>
pub fn get_advisories_for_source( &self, source: RegistrySource<'_> ) -> impl Iterator<Item = &Package>
sourcepub fn get_open_issues_for_version(
&self,
source: RegistrySource<'_>,
name: &str,
queried_version: &Version,
trust_set: &TrustSet,
trust_level_required: TrustLevel
) -> HashMap<String, IssueDetails>
pub fn get_open_issues_for_version( &self, source: RegistrySource<'_>, name: &str, queried_version: &Version, trust_set: &TrustSet, trust_level_required: TrustLevel ) -> HashMap<String, IssueDetails>
Get all issues affecting a given package version
Collect a map of Issue ID -> IssueReports
, listing
all issues known to affect a given package version.
These are calculated from advisories
and issues
fields
of the package reviews of reviewers intside a given trust_set
of at least given trust_level_required
.
pub fn get_pkg_reviews_with_issues_for_version<'a, 'b, 'c: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, queried_version: &'c Version, trust_set: &'c TrustSet, trust_level_required: TrustLevel ) -> impl Iterator<Item = &Package>
pub fn get_pkg_reviews_with_issues_for_name<'a, 'b, 'c: 'a>( &'a self, source: RegistrySource<'b>, name: &'c str, trust_set: &'c TrustSet, trust_level_required: TrustLevel ) -> impl Iterator<Item = &Package>
pub fn get_pkg_reviews_with_issues_for_source<'a, 'b, 'c: 'a>( &'a self, source: RegistrySource<'b>, trust_set: &'c TrustSet, trust_level_required: TrustLevel ) -> impl Iterator<Item = &Package>
pub fn unique_package_review_proof_count(&self) -> usize
pub fn unique_trust_proof_count(&self) -> usize
pub fn get_package_review_count( &self, source: RegistrySource<'_>, name: Option<&str>, version: Option<&Version> ) -> usize
pub fn get_package_reviews_for_package<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: Option<&'c str>, version: Option<&'d Version> ) -> impl Iterator<Item = &'a Package> + 'a
pub fn get_package_reviews_for_package_sorted<'a, 'b, 'c: 'a, 'd: 'a>( &'a self, source: RegistrySource<'b>, name: Option<&'c str>, version: Option<&'d Version> ) -> Vec<Package>
pub fn all_known_ids(&self) -> BTreeSet<Id>
sourcepub fn get_reverse_trust_for<'id, 's: 'id>(
&'s self,
id: &'id Id
) -> impl Iterator<Item = (&'id Id, TrustLevel)> + 's
pub fn get_reverse_trust_for<'id, 's: 'id>( &'s self, id: &'id Id ) -> impl Iterator<Item = (&'id Id, TrustLevel)> + 's
Only for direct relationship. See calculate_trust_set
.
Get all Ids that authored a proof (with total count)
pub fn get_package_review_by_signature<'a>( &'a self, signature: &str ) -> Option<&'a Package>
pub fn get_package_reviews_by_digest<'a>( &'a self, digest: &Digest ) -> impl Iterator<Item = Package> + 'a
pub fn record_trusted_url_from_own_id(&mut self, own_id: &PublicId)
pub fn import_from_iter( &mut self, i: impl Iterator<Item = (Proof, FetchSource)> )
sourcepub fn get_trust_proof_between(&self, from: &Id, to: &Id) -> Option<&Trust>
pub fn get_trust_proof_between(&self, from: &Id, to: &Id) -> Option<&Trust>
Only for direct relationship. See calculate_trust_set
.
sourcepub fn calculate_trust_set(
&self,
for_id: &Id,
params: &TrustDistanceParams
) -> TrustSet
pub fn calculate_trust_set( &self, for_id: &Id, params: &TrustDistanceParams ) -> TrustSet
How much you trust others
sourcepub fn lookup_url(&self, id: &Id) -> UrlOfId<'_>
pub fn lookup_url(&self, id: &Id) -> UrlOfId<'_>
Finds which URL is the latest and claimed to belong to the given Id. The result indicates how reliable information this is.