Anki/rslib/src/storage/upgrades/mod.rs
2020-09-30 11:10:14 +10:00

53 lines
1.7 KiB
Rust

// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
/// The minimum schema version we can open.
pub(super) const SCHEMA_MIN_VERSION: u8 = 11;
/// The version new files are initially created with.
pub(super) const SCHEMA_STARTING_VERSION: u8 = 11;
/// The maximum schema version we can open.
pub(super) const SCHEMA_MAX_VERSION: u8 = 16;
use super::SqliteStorage;
use crate::err::Result;
impl SqliteStorage {
pub(super) fn upgrade_to_latest_schema(&self, ver: u8, server: bool) -> Result<()> {
if ver < 14 {
self.db
.execute_batch(include_str!("schema14_upgrade.sql"))?;
self.upgrade_deck_conf_to_schema14()?;
self.upgrade_tags_to_schema14()?;
self.upgrade_config_to_schema14()?;
}
if ver < 15 {
self.db
.execute_batch(include_str!("schema15_upgrade.sql"))?;
self.upgrade_notetypes_to_schema15()?;
self.upgrade_decks_to_schema15(server)?;
self.upgrade_deck_conf_to_schema15()?;
}
if ver < 16 {
self.upgrade_deck_conf_to_schema16(server)?;
self.db.execute_batch("update col set ver = 16")?;
}
Ok(())
}
pub(super) fn downgrade_to_schema_11(&self) -> Result<()> {
self.begin_trx()?;
self.downgrade_deck_conf_from_schema16()?;
self.downgrade_decks_from_schema15()?;
self.downgrade_notetypes_from_schema15()?;
self.downgrade_config_from_schema14()?;
self.downgrade_tags_from_schema14()?;
self.db
.execute_batch(include_str!("schema11_downgrade.sql"))?;
self.commit_trx()?;
Ok(())
}
}