diesel 0.4.1

A safe, extensible ORM and Query builder
Documentation
use result::{self, TransactionError};

use std::convert::From;
use std::io;
use std::path::PathBuf;

#[derive(Debug)]
pub enum MigrationError {
    MigrationDirectoryNotFound,
    UnknownMigrationFormat(PathBuf),
    IoError(io::Error),
    UnknownMigrationVersion(String),
}

impl PartialEq for MigrationError {
    fn eq(&self, other: &Self) -> bool {
        match (self, other) {
            (
                &MigrationError::MigrationDirectoryNotFound,
                &MigrationError::MigrationDirectoryNotFound,
            ) => true,
            (
                &MigrationError::UnknownMigrationFormat(ref p1),
                &MigrationError::UnknownMigrationFormat(ref p2),
            ) => p1 == p2,
            _ => false
        }
    }
}

impl From<io::Error> for MigrationError {
    fn from(e: io::Error) -> Self {
        MigrationError::IoError(e)
    }
}

#[derive(Debug, PartialEq)]
pub enum RunMigrationsError {
    MigrationError(MigrationError),
    QueryError(result::Error),
}

impl From<MigrationError> for RunMigrationsError {
    fn from(e: MigrationError) -> Self {
        RunMigrationsError::MigrationError(e)
    }
}

impl From<result::Error> for RunMigrationsError {
    fn from(e: result::Error) -> Self {
        RunMigrationsError::QueryError(e)
    }
}

impl From<io::Error> for RunMigrationsError {
    fn from(e: io::Error) -> Self {
        RunMigrationsError::MigrationError(e.into())
    }
}

impl From<TransactionError<RunMigrationsError>> for RunMigrationsError {
    fn from(e: TransactionError<RunMigrationsError>) -> Self {
        use result::TransactionError::*;
        match e {
            CouldntCreateTransaction(e) => RunMigrationsError::from(e),
            UserReturnedError(e) => e,
        }
    }
}