use advisory::Advisory;
use db::AdvisoryDatabase;
use lockfile::Lockfile;
use package::Package;
#[derive(Debug, PartialEq, Clone)]
pub struct Vulnerability {
pub advisory: Advisory,
pub package: Package,
}
impl Vulnerability {
pub fn find_all(db: &AdvisoryDatabase, lockfile: &Lockfile) -> Vec<Vulnerability> {
let mut vulns = vec![];
for package in &lockfile.packages {
for advisory in db.advisories_for_crate(package.name.clone(), &package.version) {
vulns.push(Self::new(advisory, &package))
}
}
vulns
}
pub fn new(advisory: &Advisory, package: &Package) -> Self {
Self {
advisory: advisory.clone(),
package: package.clone(),
}
}
}