mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
migrations
This commit is contained in:
committed by
Aiden McClelland
parent
3588d0342e
commit
5a13320921
@@ -10,7 +10,8 @@ use reqwest::Url;
|
||||
use rpc_toolkit::url::Host;
|
||||
use rpc_toolkit::Context;
|
||||
use serde::Deserialize;
|
||||
use sqlx::SqlitePool;
|
||||
use sqlx::migrate::MigrateDatabase;
|
||||
use sqlx::{Sqlite, SqlitePool};
|
||||
use tokio::fs::File;
|
||||
use tokio::sync::RwLock;
|
||||
|
||||
@@ -63,13 +64,20 @@ impl RpcContext {
|
||||
.unwrap_or_else(|| Path::new("/mnt/embassy-os/embassy.db").to_owned()),
|
||||
)
|
||||
.await?;
|
||||
let secret_store = SqlitePool::connect(&format!(
|
||||
let secret_store_url = format!(
|
||||
"sqlite://{}",
|
||||
base.secret_store
|
||||
.unwrap_or_else(|| Path::new("/mnt/embassy-os/secrets.db").to_owned())
|
||||
.display()
|
||||
))
|
||||
.await?;
|
||||
);
|
||||
if !Sqlite::database_exists(&secret_store_url).await? {
|
||||
Sqlite::create_database(&secret_store_url).await?;
|
||||
}
|
||||
let secret_store = SqlitePool::connect(&secret_store_url).await?;
|
||||
sqlx::migrate!()
|
||||
.run(&secret_store)
|
||||
.await
|
||||
.with_kind(crate::ErrorKind::Database)?;
|
||||
let docker = Docker::connect_with_unix_defaults()?;
|
||||
let net_controller = Arc::new(
|
||||
NetController::init(
|
||||
|
||||
7
appmgr/src/install/cleanup.rs
Normal file
7
appmgr/src/install/cleanup.rs
Normal file
@@ -0,0 +1,7 @@
|
||||
use crate::db::model::InstalledPackageDataEntry;
|
||||
use crate::s9pk::manifest::{Manifest, PackageId};
|
||||
use crate::Error;
|
||||
|
||||
pub async fn cleanup(info: Result<InstalledPackageDataEntry, &Manifest>) -> Result<(), Error> {
|
||||
Ok(()) // TODO
|
||||
}
|
||||
@@ -25,6 +25,7 @@ use sha2::{Digest, Sha256};
|
||||
use tokio::fs::{File, OpenOptions};
|
||||
use tokio::io::{AsyncRead, AsyncSeek, AsyncSeekExt, AsyncWrite, AsyncWriteExt};
|
||||
|
||||
use self::cleanup::cleanup;
|
||||
use self::progress::{InstallProgress, InstallProgressTracker};
|
||||
use crate::context::{EitherContext, ExtendedContext, RpcContext};
|
||||
use crate::db::model::{
|
||||
@@ -37,6 +38,7 @@ use crate::status::{DependencyErrors, MainStatus, Status};
|
||||
use crate::util::{display_none, AsyncFileExt, Version};
|
||||
use crate::{Error, ResultExt};
|
||||
|
||||
pub mod cleanup;
|
||||
pub mod progress;
|
||||
|
||||
pub const PKG_CACHE: &'static str = "/mnt/embassy-os/cache/packages";
|
||||
@@ -232,13 +234,15 @@ pub async fn download_install_s9pk(
|
||||
.await;
|
||||
|
||||
if let Err(e) = res {
|
||||
let mut handle = ctx.db.handle();
|
||||
let mut broken = crate::db::DatabaseModel::new()
|
||||
.broken_packages()
|
||||
.get_mut(&mut handle)
|
||||
.await?;
|
||||
broken.push(pkg_id.clone());
|
||||
broken.save(&mut handle).await?;
|
||||
if let Err(e) = cleanup(Err(temp_manifest)).await {
|
||||
let mut handle = ctx.db.handle();
|
||||
let mut broken = crate::db::DatabaseModel::new()
|
||||
.broken_packages()
|
||||
.get_mut(&mut handle)
|
||||
.await?;
|
||||
broken.push(pkg_id.clone());
|
||||
broken.save(&mut handle).await?;
|
||||
}
|
||||
Err(e)
|
||||
} else {
|
||||
Ok(())
|
||||
@@ -536,7 +540,7 @@ pub async fn install_s9pk<R: AsyncRead + AsyncSeek + Unpin>(
|
||||
{
|
||||
configured &= res.configured;
|
||||
}
|
||||
// cleanup(pkg_id, Some(prev)).await?;
|
||||
cleanup(Ok(prev)).await?;
|
||||
if let Some(res) = manifest
|
||||
.migrations
|
||||
.from(&prev_manifest.version, pkg_id, version, &manifest.volumes)
|
||||
|
||||
Reference in New Issue
Block a user