refactor dependency errors (#574)

* refactor dependency errors

* fix hostname after restart

* fix errors from testing

* fix updating of current_dependents

* fixes
This commit is contained in:
Aiden McClelland
2021-10-04 21:44:34 -06:00
parent b7e6729272
commit 4e9849cd38
16 changed files with 628 additions and 330 deletions

View File

@@ -1,11 +1,12 @@
use std::collections::HashMap;
use std::collections::{BTreeMap, HashMap};
use bollard::image::ListImagesOptions;
use patch_db::{DbHandle, PatchDbHandle};
use super::PKG_DOCKER_DIR;
use crate::context::RpcContext;
use crate::db::model::{InstalledPackageDataEntry, PackageDataEntry};
use crate::db::model::{CurrentDependencyInfo, InstalledPackageDataEntry, PackageDataEntry};
use crate::dependencies::update_current_dependents;
use crate::s9pk::manifest::PackageId;
use crate::util::Version;
use crate::Error;
@@ -29,8 +30,7 @@ pub async fn update_dependents<'a, Db: DbHandle, I: IntoIterator<Item = &'a Pack
.get(db, true)
.await?;
if let Err(e) = if let Some(info) = man.dependencies.0.get(id) {
info.satisfied(ctx, db, id, None, dep, &man.version, &man.volumes)
.await?
info.satisfied(ctx, db, id, None, dep).await?
} else {
Ok(())
} {
@@ -167,6 +167,26 @@ pub async fn cleanup_failed<Db: DbHandle>(
Ok(())
}
pub async fn remove_current_dependents<'a, Db: DbHandle, I: IntoIterator<Item = &'a PackageId>>(
db: &mut Db,
id: &PackageId,
current_dependencies: I,
) -> Result<(), Error> {
for dep in current_dependencies {
if let Some(current_dependents) = crate::db::DatabaseModel::new()
.package_data()
.idx_model(dep)
.and_then(|m| m.installed())
.map::<_, BTreeMap<PackageId, CurrentDependencyInfo>>(|m| m.current_dependents())
.check(db)
.await?
{
current_dependents.remove(db, id).await?
}
}
Ok(())
}
pub async fn uninstall(
ctx: &RpcContext,
db: &mut PatchDbHandle,
@@ -178,6 +198,12 @@ pub async fn uninstall(
.package_data()
.remove(&mut tx, &entry.manifest.id)
.await?;
remove_current_dependents(
&mut tx,
&entry.manifest.id,
entry.current_dependencies.keys(),
)
.await?;
update_dependents(
ctx,
&mut tx,