aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-02-21 23:01:59 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-02-21 23:01:59 +0100
commit31f15dc02bdbb815ce2d53f10d710a65b0b7bf0b (patch)
treebf6a3b77e72a88c535858a94fa5a2fd66051babd
parentbuild(flake): Add `ffmpeg` to the devshell (diff)
downloadyt-31f15dc02bdbb815ce2d53f10d710a65b0b7bf0b.zip
feat(yt/cli): Make running the migrations of the database optional
-rw-r--r--yt/src/app.rs13
-rw-r--r--yt/src/cli.rs5
-rw-r--r--yt/src/main.rs7
3 files changed, 17 insertions, 8 deletions
diff --git a/yt/src/app.rs b/yt/src/app.rs
index 937e58f..bf8ad0f 100644
--- a/yt/src/app.rs
+++ b/yt/src/app.rs
@@ -9,6 +9,7 @@
// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
use anyhow::{Context, Result};
+use log::warn;
use sqlx::{SqlitePool, sqlite::SqliteConnectOptions};
use crate::{config::Config, storage::migrate::migrate_db};
@@ -20,7 +21,7 @@ pub struct App {
}
impl App {
- pub async fn new(config: Config) -> Result<Self> {
+ pub async fn new(config: Config, should_migrate_db: bool) -> Result<Self> {
let options = SqliteConnectOptions::new()
.filename(&config.paths.database_path)
.optimize_on_close(true, None)
@@ -35,9 +36,13 @@ impl App {
config,
};
- migrate_db(&app)
- .await
- .context("Failed to migrate db to new version")?;
+ if should_migrate_db {
+ migrate_db(&app)
+ .await
+ .context("Failed to migrate db to new version")?;
+ } else {
+ warn!("Skipping database migration.");
+ }
Ok(app)
}
diff --git a/yt/src/cli.rs b/yt/src/cli.rs
index 3afce3f..73121d1 100644
--- a/yt/src/cli.rs
+++ b/yt/src/cli.rs
@@ -34,6 +34,11 @@ pub struct CliArgs {
#[arg(long, short = 'V', action= ArgAction::SetTrue)]
pub version: bool,
+ /// Do not perform database migration before starting.
+ /// Setting this could cause runtime database access errors.
+ #[arg(long, short, action=ArgAction::SetTrue, default_value_t = false)]
+ pub no_migrate_db: bool,
+
/// Increase message verbosity
#[arg(long="verbose", short = 'v', action = ArgAction::Count)]
pub verbosity: u8,
diff --git a/yt/src/main.rs b/yt/src/main.rs
index 0178488..930eb5b 100644
--- a/yt/src/main.rs
+++ b/yt/src/main.rs
@@ -88,10 +88,9 @@ async fn main() -> Result<()> {
}
});
- let app = {
- let config = Config::from_config_file(args.db_path, args.config_path, args.color)?;
- App::new(config).await?
- };
+ let config = Config::from_config_file(args.db_path, args.config_path, args.color)?;
+
+ let app = App::new(config, !args.no_migrate_db).await?;
match args.command.unwrap_or(Command::default()) {
Command::Download {