mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-06-13 23:47:47 +00:00
47 lines
1.8 KiB
Rust
47 lines
1.8 KiB
Rust
mod v1_10;
|
|
mod v1_9;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use anyhow::{bail, Context};
|
|
use meilisearch_types::versioning::create_version_file;
|
|
|
|
use v1_10::v1_9_to_v1_10;
|
|
|
|
pub struct OfflineUpgrade {
|
|
pub db_path: PathBuf,
|
|
pub current_version: (String, String, String),
|
|
pub target_version: (String, String, String),
|
|
}
|
|
|
|
impl OfflineUpgrade {
|
|
pub fn upgrade(self) -> anyhow::Result<()> {
|
|
let (current_major, current_minor, current_patch) = &self.current_version;
|
|
let (target_major, target_minor, target_patch) = &self.target_version;
|
|
|
|
println!("Upgrading from {current_major}.{current_minor}.{current_patch} to {target_major}.{target_minor}.{target_patch}");
|
|
|
|
match (
|
|
(current_major.as_str(), current_minor.as_str(), current_patch.as_str()),
|
|
(target_major.as_str(), target_minor.as_str(), target_patch.as_str()),
|
|
) {
|
|
(("1", "9", _), ("1", "10", _)) => v1_9_to_v1_10(&self.db_path)?,
|
|
((major, minor, _), _) if major != "1" && minor != "9" =>
|
|
bail!("Unsupported current version {current_major}.{current_minor}.{current_patch}. Can only upgrade from v1.9"),
|
|
(_, (major, minor, _)) if major != "1" && minor != "10" =>
|
|
bail!("Unsupported target version {target_major}.{target_minor}.{target_patch}. Can only upgrade to v1.10"),
|
|
_ =>
|
|
bail!("Unsupported upgrade from {current_major}.{current_minor}.{current_patch} to {target_major}.{target_minor}.{target_patch}. Can only upgrade from v1.9 to v1.10"),
|
|
}
|
|
|
|
println!("Writing VERSION file");
|
|
|
|
create_version_file(&self.db_path, target_major, target_minor, target_patch)
|
|
.context("while writing VERSION file after the upgrade")?;
|
|
|
|
println!("Success");
|
|
|
|
Ok(())
|
|
}
|
|
}
|