Skip to main content

MigrateOptions

Struct MigrateOptions 

Source
pub struct MigrateOptions {
    pub version_storage: VersionStorage,
    pub backup: bool,
    pub backup_options: Option<DbOptions>,
    pub forward_compatible: Option<fn(&Connection) -> bool>,
    pub optimize_after: bool,
    pub legacy_versions: Option<LegacyVersionTable>,
    pub backup_name: Option<Arc<dyn Fn(i64, i64) -> String + Send + Sync>>,
    pub verify_backup: Option<Arc<dyn Fn(&Path) -> Result<(), String> + Send + Sync>>,
    pub backup_retention: Option<usize>,
}

Fields§

§version_storage: VersionStorage

Version location shared by reads and transactional migration writes.

§backup: bool

Take a pre-migration backup when migrating an existing (version > 0) on-disk database.

§backup_options: Option<DbOptions>

Key source for the backup (SQLCipher); DbOptions::open_writer_migrated fills this in.

§forward_compatible: Option<fn(&Connection) -> bool>

For a database newer than this build: true means the subset this build reads/writes is intact, so open it read-write without migrating.

§optimize_after: bool

Refresh planner statistics after migrating (PRAGMA optimize).

§legacy_versions: Option<LegacyVersionTable>

Adopt an existing app version table (see MigrateOptions::import_legacy_versions). Default none.

§backup_name: Option<Arc<dyn Fn(i64, i64) -> String + Send + Sync>>

Name of the pre-migration backup, given the current and target versions. Default <db>.pre-v<target>.bak beside the database. Must be a plain file name that is not the database’s own name (a name with a path separator or NUL is refused as DbError::Backup).

§verify_backup: Option<Arc<dyn Fn(&Path) -> Result<(), String> + Send + Sync>>

Checks the pre-migration backup before the first step runs. Err(reason) stops the migration with DbError::Backup. The live database is untouched and the backup is kept.

§backup_retention: Option<usize>

Keeps only the newest n pre-migration backups of this database, by modification time: after each backup, older files named <db>.pre-*.bak in the same directory are removed. The backup just taken is always kept. Removal is best effort and never fails the migration. Default None: every backup is kept.

Implementations§

Source§

impl MigrateOptions

Source

pub fn import_legacy_versions(self, legacy: LegacyVersionTable) -> Self

Adopt the applied version of an app’s existing version table, once, so its migrations are not re-run. Applies only when the configured storage reads version 0 and the legacy table’s highest version is above zero. The configured storage is then seeded to that version (a VersionTable gets one row per version up to it), and the migrations up to it are skipped. The legacy table is only read, never written. Idempotent: once seeded, the configured storage is above zero, so later opens do not consult the legacy table. Rolling back to version 0 while the legacy table still exists re-adopts it on the next open, so drop or rename that table after adoption. A legacy version above this build’s newest migration is refused as DbError::NewerDatabase and nothing is written.

Trait Implementations§

Source§

impl Clone for MigrateOptions

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for MigrateOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.