Improve return type for insert function
This commit is contained in:
		@ -22,12 +22,24 @@ pub struct Texture {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub enum ReplaceTextureStatus {
 | 
			
		||||
    // Done.
 | 
			
		||||
    /// Done.
 | 
			
		||||
    Ok,
 | 
			
		||||
 | 
			
		||||
    // Call Again With Texture Binary
 | 
			
		||||
    /// Call Again With Texture Binary
 | 
			
		||||
    NeedTextureData(Sha256),
 | 
			
		||||
 | 
			
		||||
    // Name or id already in use
 | 
			
		||||
    Conflict,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub type ProtocolResult<T> = Result<T, ProtocolError>;
 | 
			
		||||
pub enum ProtocolError {
 | 
			
		||||
    BadRequest(String),
 | 
			
		||||
    FileNotFound(String),
 | 
			
		||||
    Conflict(String),
 | 
			
		||||
    InternalServerError(std::io::Error),
 | 
			
		||||
    NotImplemented,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<io::Error> for ProtocolError {
 | 
			
		||||
    fn from(err: io::Error) -> Self {
 | 
			
		||||
        ProtocolError::InternalServerError(err)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ impl DataStore {
 | 
			
		||||
        &mut self,
 | 
			
		||||
        tex: Texture,
 | 
			
		||||
        data: Option<Arc<Vec<u8>>>,
 | 
			
		||||
    ) -> io::Result<ReplaceTextureStatus> {
 | 
			
		||||
    ) -> ProtocolResult<ReplaceTextureStatus> {
 | 
			
		||||
        use io::Write;
 | 
			
		||||
 | 
			
		||||
        // Check for collisions
 | 
			
		||||
@ -86,7 +86,9 @@ impl DataStore {
 | 
			
		||||
            .is_some()
 | 
			
		||||
        {
 | 
			
		||||
            // Name or id already in use
 | 
			
		||||
            Ok(ReplaceTextureStatus::Conflict)
 | 
			
		||||
            Err(ProtocolError::Conflict(
 | 
			
		||||
                "Name or id is already in use.".to_string(),
 | 
			
		||||
            ))
 | 
			
		||||
        } else {
 | 
			
		||||
            // Insert it
 | 
			
		||||
            if self.has_hash(&tex.texture_hash)? {
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1 @@
 | 
			
		||||
use crate::model::*;
 | 
			
		||||
 | 
			
		||||
pub type ProtocolResult<T> = Result<T, ProtocolError>;
 | 
			
		||||
pub enum ProtocolError {
 | 
			
		||||
    BadRequest(String),
 | 
			
		||||
    FileNotFound(String),
 | 
			
		||||
    Conflict(String),
 | 
			
		||||
    InternalServerError(std::io::Error),
 | 
			
		||||
    NotImplemented,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -109,10 +109,6 @@ where
 | 
			
		||||
                                        panic!("Contract Violation: handler must not return NeedTextureData \
 | 
			
		||||
                                        when data is given.");
 | 
			
		||||
                                    }
 | 
			
		||||
                                    Ok(ReplaceTextureStatus::Conflict) => {
 | 
			
		||||
                                        connection
 | 
			
		||||
                                            .send(&Package::Error(409, "Conflict".to_string()))?;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    Err(err) => {
 | 
			
		||||
                                        connection.send(&Package::from(err))?;
 | 
			
		||||
                                    }
 | 
			
		||||
@ -129,9 +125,6 @@ where
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    Ok(ReplaceTextureStatus::Conflict) => {
 | 
			
		||||
                        connection.send(&Package::Error(409, "Conflict".to_string()))?;
 | 
			
		||||
                    }
 | 
			
		||||
                    Err(err) => {
 | 
			
		||||
                        connection.send(&Package::from(err))?;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user