diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-11-25 21:02:25 -0500 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-11-25 21:02:25 -0500 |
| commit | 664e3beba053aee50fc6b3cdcc6ee0dfe5e0fe1f (patch) | |
| tree | 096b997d56959dd88d099f4f96a383daa4dbc39a /src/db/mod.rs | |
| parent | 91c33501a315abe04aeed54aa27388ce0ad241ce (diff) | |
| parent | 33601ef703a640b57e5bd0bf7dbd6d7ffa7377bf (diff) | |
Merge branch 'house-of-failed'
Diffstat (limited to 'src/db/mod.rs')
| -rw-r--r-- | src/db/mod.rs | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/src/db/mod.rs b/src/db/mod.rs index 9a74dcb..98ec618 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -1,9 +1,9 @@ mod backup; +pub mod failed; use std::str::FromStr; use sqlx::{ - error::{DatabaseError, ErrorKind}, migrate::MigrateDatabase as _, sqlite::{Sqlite, SqliteConnectOptions, SqlitePool, SqlitePoolOptions}, }; @@ -66,14 +66,6 @@ pub trait NotFound: Sized { type Ok; type Error; - fn not_found<E, F>(self, map: F) -> Result<Self::Ok, E> - where - E: From<Self::Error>, - F: FnOnce() -> E, - { - self.optional()?.ok_or_else(map) - } - fn optional(self) -> Result<Option<Self::Ok>, Self::Error>; } @@ -89,32 +81,3 @@ impl<T> NotFound for Result<T, sqlx::Error> { } } } - -pub trait Duplicate { - type Ok; - type Error; - - fn duplicate<E, F>(self, map: F) -> Result<Self::Ok, E> - where - E: From<Self::Error>, - F: FnOnce() -> E; -} - -impl<T> Duplicate for Result<T, sqlx::Error> { - type Ok = T; - type Error = sqlx::Error; - - fn duplicate<E, F>(self, map: F) -> Result<T, E> - where - E: From<sqlx::Error>, - F: FnOnce() -> E, - { - match self { - Ok(value) => Ok(value), - Err(error) => match error.as_database_error().map(DatabaseError::kind) { - Some(ErrorKind::UniqueViolation) => Err(map()), - _ => Err(error.into()), - }, - } - } -} |
