mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-10-02 15:25:32 +00:00

* test: add a failing test * feat: add no_tx to migration struct * feat: execute migration with no tx block * fix: expected string literal compilation error * test: update no tx to content comment * refactor: use the sql comment instead of file name semantics * docs: remove no_tx from file format comment * fix: remove filename matches * fix: messed up merge * refactor: dedupe migration * fix: move comment to where it makes sense * fix: linter error
43 lines
901 B
Rust
43 lines
901 B
Rust
use std::borrow::Cow;
|
|
|
|
use sha2::{Digest, Sha384};
|
|
|
|
use super::MigrationType;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Migration {
|
|
pub version: i64,
|
|
pub description: Cow<'static, str>,
|
|
pub migration_type: MigrationType,
|
|
pub sql: Cow<'static, str>,
|
|
pub checksum: Cow<'static, [u8]>,
|
|
pub no_tx: bool,
|
|
}
|
|
|
|
impl Migration {
|
|
pub fn new(
|
|
version: i64,
|
|
description: Cow<'static, str>,
|
|
migration_type: MigrationType,
|
|
sql: Cow<'static, str>,
|
|
no_tx: bool,
|
|
) -> Self {
|
|
let checksum = Cow::Owned(Vec::from(Sha384::digest(sql.as_bytes()).as_slice()));
|
|
|
|
Migration {
|
|
version,
|
|
description,
|
|
migration_type,
|
|
sql,
|
|
checksum,
|
|
no_tx,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct AppliedMigration {
|
|
pub version: i64,
|
|
pub checksum: Cow<'static, [u8]>,
|
|
}
|