Struct Validator

Source
pub struct Validator {
    pub migrations: Cow<'static, [Migration]>,
    pub ignore_missing: bool,
    pub locking: bool,
}
Expand description

Validate previously applied migrations against the migration source. Depending on the migration source this can be used to check if all migrations for the current version of the application have been applied. Use Validator::from_migrator to use the migrations available during compilation.

§Examples

// Use migrations that were in a local folder during build: ./tests/migrations-1
let v = Validator::from_migrator(sqlx::migrate!("./tests/migrations-1"));

// Create a connection pool
let pool = sqlx_core::sqlite::SqlitePoolOptions::new().connect("sqlite::memory:").await?;
let mut conn = pool.acquire().await?;

// Validate the migrations
v.validate(&mut *conn).await?;

Fields§

§migrations: Cow<'static, [Migration]>§ignore_missing: bool§locking: bool

Implementations§

Source§

impl Validator

Source

pub async fn new<'s, S>(source: S) -> Result<Self, MigrateError>
where S: MigrationSource<'s>,

Creates a new instance with the given source. Please note that the source is resolved at runtime and not at compile time. You can use Validator::from<sqlx::Migrator> and the sqlx::migrate! macro to embed the migrations into the binary during compile time.

§Examples
use std::path::Path;

// Read migrations from a local folder: ./tests/migrations-1
let v = Validator::new(Path::new("./tests/migrations-1")).await?;

// Create a connection pool
let pool = sqlx::PgPool::connect("postgres://postgres:postgres@localhost:5432/postgres").await?;
let mut conn = pool.acquire().await?;

// Validate the migrations
v.validate(&mut *conn).await?;

See MigrationSource for details on structure of the ./tests/migrations-1 directory.

Source

pub fn from_migrator(migrator: Migrator) -> Self

Creates a new instance with the migrations from the given migrator. You can combine this with the sqlx::migrate! macro to embed the migrations into the binary during compile time.

§Examples
// Use migrations that were in a local folder during build: ./tests/migrations-1
let v = Validator::from_migrator(sqlx::migrate!("./tests/migrations-1"));

// Create a connection pool
let pool = sqlx::PgPool::connect("postgres://postgres:postgres@localhost:5432/postgres").await?;
let mut conn = pool.acquire().await?;

// Validate the migrations
v.validate(&mut *conn).await?;
Source

pub async fn validate<'c, C>(&self, conn: &mut C) -> Result<(), ValidateError>
where C: Migrate,

Trait Implementations§

Source§

impl Debug for Validator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&Migrator> for Validator

Source§

fn from(migrator: &Migrator) -> Self

Converts to this type from the input type.
Source§

impl From<Migrator> for Validator

Source§

fn from(migrator: Migrator) -> Self

Converts to this type from the input type.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T