Manually implement From Trait for the DatabaseError.
This commit is contained in:
parent
1085d468b9
commit
0892fe26ba
@ -7,6 +7,7 @@ use diesel::r2d2::ConnectionManager;
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use errors::DatabaseError;
|
||||||
use failure::Error;
|
use failure::Error;
|
||||||
|
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
@ -57,7 +58,7 @@ fn init_pool(db_path: &str) -> Pool {
|
|||||||
pool
|
pool
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_migration_on(connection: &SqliteConnection) -> Result<(), Error> {
|
fn run_migration_on(connection: &SqliteConnection) -> Result<(), DatabaseError> {
|
||||||
info!("Running DB Migrations...");
|
info!("Running DB Migrations...");
|
||||||
// embedded_migrations::run(connection)?;
|
// embedded_migrations::run(connection)?;
|
||||||
embedded_migrations::run_with_output(connection, &mut io::stdout()).map_err(From::from)
|
embedded_migrations::run_with_output(connection, &mut io::stdout()).map_err(From::from)
|
||||||
@ -66,7 +67,7 @@ fn run_migration_on(connection: &SqliteConnection) -> Result<(), Error> {
|
|||||||
/// Reset the database into a clean state.
|
/// Reset the database into a clean state.
|
||||||
// Test share a Temp file db.
|
// Test share a Temp file db.
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn truncate_db() -> Result<(), Error> {
|
pub fn truncate_db() -> Result<(), DatabaseError> {
|
||||||
let db = connection();
|
let db = connection();
|
||||||
let con = db.get()?;
|
let con = db.get()?;
|
||||||
con.execute("DELETE FROM episode")?;
|
con.execute("DELETE FROM episode")?;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ use failure::Error;
|
|||||||
|
|
||||||
use database::connection;
|
use database::connection;
|
||||||
use models::*;
|
use models::*;
|
||||||
|
// use errors::DatabaseError;
|
||||||
|
|
||||||
// Feel free to open a Merge request that manually replaces Result<T> if you feel bored.
|
// Feel free to open a Merge request that manually replaces Result<T> if you feel bored.
|
||||||
use std::result;
|
use std::result;
|
||||||
|
|||||||
@ -22,23 +22,47 @@ struct IOError(io::Error);
|
|||||||
#[derive(Fail, Debug)]
|
#[derive(Fail, Debug)]
|
||||||
pub enum DatabaseError {
|
pub enum DatabaseError {
|
||||||
#[fail(display = "SQL Query failed: {}", _0)]
|
#[fail(display = "SQL Query failed: {}", _0)]
|
||||||
DieselResultError(diesel::result::Error),
|
DieselResultError(#[cause] diesel::result::Error),
|
||||||
#[fail(display = "Database Migration error: {}", _0)]
|
#[fail(display = "Database Migration error: {}", _0)]
|
||||||
DieselMigrationError(RunMigrationsError),
|
DieselMigrationError(#[cause] RunMigrationsError),
|
||||||
#[fail(display = "R2D2 error: {}", _0)]
|
#[fail(display = "R2D2 error: {}", _0)]
|
||||||
R2D2Error(r2d2::Error),
|
R2D2Error(#[cause] r2d2::Error),
|
||||||
#[fail(display = "R2D2 Pool error: {}", _0)]
|
#[fail(display = "R2D2 Pool error: {}", _0)]
|
||||||
R2D2PoolError(r2d2::PoolError),
|
R2D2PoolError(#[cause] r2d2::PoolError),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<RunMigrationsError> for DatabaseError {
|
||||||
|
fn from(err: RunMigrationsError) -> Self {
|
||||||
|
DatabaseError::DieselMigrationError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<diesel::result::Error> for DatabaseError {
|
||||||
|
fn from(err: diesel::result::Error) -> Self {
|
||||||
|
DatabaseError::DieselResultError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<r2d2::Error> for DatabaseError {
|
||||||
|
fn from(err: r2d2::Error) -> Self {
|
||||||
|
DatabaseError::R2D2Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<r2d2::PoolError> for DatabaseError {
|
||||||
|
fn from(err: r2d2::PoolError) -> Self {
|
||||||
|
DatabaseError::R2D2PoolError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Fail, Debug)]
|
#[derive(Fail, Debug)]
|
||||||
pub enum HttpError {
|
pub enum HttpError {
|
||||||
#[fail(display = "Reqwest Error: {}", _0)]
|
#[fail(display = "Reqwest Error: {}", _0)]
|
||||||
ReqError(reqwest::Error),
|
ReqError(#[cause] reqwest::Error),
|
||||||
#[fail(display = "Hyper Error: {}", _0)]
|
#[fail(display = "Hyper Error: {}", _0)]
|
||||||
HyperError(hyper::Error),
|
HyperError(#[cause] hyper::Error),
|
||||||
#[fail(display = "Url Error: {}", _0)]
|
#[fail(display = "Url Error: {}", _0)]
|
||||||
UrlError(url::ParseError),
|
UrlError(#[cause] url::ParseError),
|
||||||
#[fail(display = "TLS Error: {}", _0)]
|
#[fail(display = "TLS Error: {}", _0)]
|
||||||
TLSError(native_tls::Error),
|
TLSError(#[cause] native_tls::Error),
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user