summaryrefslogtreecommitdiff
path: root/src/db
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-11-09 12:44:31 -0500
committerOwen Jacobson <owen@grimoire.ca>2025-11-09 13:20:22 -0500
commit475403554aff974f529f6eac0c25da6c74450d26 (patch)
tree87fbe5aa808c7d5db9c2f9c1cfab68283e56c30a /src/db
parente46e281550e3cbbd8a10473fbb94abed763a6501 (diff)
Remove support for detecting and rejecting databases from historical migration streams.
All known instances of that migration stream have long since disappeared, and this lets us get rid of a dependency.
Diffstat (limited to 'src/db')
-rw-r--r--src/db/mod.rs62
1 files changed, 1 insertions, 61 deletions
diff --git a/src/db/mod.rs b/src/db/mod.rs
index 99b8986..9a74dcb 100644
--- a/src/db/mod.rs
+++ b/src/db/mod.rs
@@ -2,10 +2,9 @@ mod backup;
use std::str::FromStr;
-use hex_literal::hex;
use sqlx::{
error::{DatabaseError, ErrorKind},
- migrate::{Migrate as _, MigrateDatabase as _},
+ migrate::MigrateDatabase as _,
sqlite::{Sqlite, SqliteConnectOptions, SqlitePool, SqlitePoolOptions},
};
@@ -16,19 +15,6 @@ pub async fn prepare(url: &str, backup_url: &str) -> Result<SqlitePool, Error> {
let pool = create(url).await?;
- // First migration of original migration series, from commit
- // 9bd6d9862b1c243def02200bca2cfbf578ad2a2f or earlier.
- reject_migration(&pool, "20240831024047", "login", &hex!("9949D238C4099295EC4BEE734BFDA8D87513B2973DFB895352A11AB01DD46CB95314B7F1B3431B77E3444A165FE3DC28")).await?;
-
- // Original version of this migration was buggy, but didn't require a
- // database reset to fix.
- migration_replaced(
- &pool,
- "20241009031441",
- &hex!("4B5873397C8BA9CFAF49172EE6DE455CD643A27BD71032ECD8EFA7684362FE620A8F6B27D493AF8D9A570C38CC1A6416"),
- &hex!("E5CDEDA38F2BCE4C24A45E58D3BDE3FF2C30B1431C3B01870BB9DEB142E5A200B9C850C3C72A45D352C15D8DB51B8467"),
- ).await?;
-
let backup_pool = create(backup_url).await?;
backup::Backup::from(&pool)
.to(&backup_pool)
@@ -58,50 +44,6 @@ async fn create(database_url: &str) -> sqlx::Result<SqlitePool> {
Ok(pool)
}
-async fn reject_migration(
- pool: &SqlitePool,
- version: &str,
- description: &str,
- checksum: &[u8],
-) -> Result<(), Error> {
- let mut conn = pool.acquire().await?;
- conn.ensure_migrations_table().await?;
- let applied = conn.list_applied_migrations().await?;
-
- for migration in applied {
- if migration.checksum == checksum {
- return Err(Error::Rejected(version.into(), description.into()));
- }
- }
-
- Ok(())
-}
-
-async fn migration_replaced(
- pool: &SqlitePool,
- version: &str,
- original: &[u8],
- replacement: &[u8],
-) -> Result<(), sqlx::Error> {
- let mut conn = pool.acquire().await?;
- conn.ensure_migrations_table().await?;
- sqlx::query!(
- r#"
- update _sqlx_migrations
- set checksum = $1
- where version = $2
- and checksum = $3
- "#,
- replacement,
- version,
- original,
- )
- .execute(&mut *conn)
- .await?;
-
- Ok(())
-}
-
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error(transparent)]
@@ -118,8 +60,6 @@ pub enum Error {
Drop(sqlx::Error, sqlx::migrate::MigrateError),
#[error(transparent)]
Migration(#[from] sqlx::migrate::MigrateError),
- #[error("database contains rejected migration {0}:{1}, move it aside")]
- Rejected(String, String),
}
pub trait NotFound: Sized {