Moved session inside database.
This commit is contained in:
		@@ -108,7 +108,9 @@ impl FileData<Self> for DataType {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Clone)]
 | 
			
		||||
pub struct MoreThanText;
 | 
			
		||||
pub struct MoreThanText {
 | 
			
		||||
    session: Vec<String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl MoreThanText {
 | 
			
		||||
    pub async fn new<P>(dir: P) -> Result<Self, DBError>
 | 
			
		||||
@@ -118,19 +120,26 @@ impl MoreThanText {
 | 
			
		||||
        let pathbuf = dir.into();
 | 
			
		||||
        let entry = pathbuf.as_path().join(ENTRY);
 | 
			
		||||
        match Entry::get(entry.clone()).await {
 | 
			
		||||
            Ok(_) => Ok(Self {}),
 | 
			
		||||
            Ok(_) => (),
 | 
			
		||||
            Err(_) => {
 | 
			
		||||
                let store = DataType::new("store").unwrap();
 | 
			
		||||
                match Entry::new(entry, store).await {
 | 
			
		||||
                    Ok(_) => Ok(Self {}),
 | 
			
		||||
                    Ok(_) => (),
 | 
			
		||||
                    Err(err) => {
 | 
			
		||||
                        let mut error = DBError::from_code(ErrorCode::CacheReadWrite);
 | 
			
		||||
                        error.add_source(err);
 | 
			
		||||
                        Err(error)
 | 
			
		||||
                        return Err(error);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        Ok(Self {
 | 
			
		||||
            session: [ENTRY.to_string()].to_vec(),
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn set_session(&mut self, sess: Vec<String>) {
 | 
			
		||||
        self.session = sess;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -294,7 +303,7 @@ mod datatype_file {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod create {
 | 
			
		||||
mod db {
 | 
			
		||||
    use super::*;
 | 
			
		||||
    use async_std::fs::write;
 | 
			
		||||
    use std::error::Error;
 | 
			
		||||
@@ -303,9 +312,7 @@ mod create {
 | 
			
		||||
    #[async_std::test]
 | 
			
		||||
    async fn create() {
 | 
			
		||||
        let dir = tempdir().unwrap();
 | 
			
		||||
        MoreThanText::new(dir.path().to_str().unwrap())
 | 
			
		||||
            .await
 | 
			
		||||
            .unwrap();
 | 
			
		||||
        let mtt = MoreThanText::new(dir.path()).await.unwrap();
 | 
			
		||||
        let epoint = dir.path().join(ENTRY);
 | 
			
		||||
        assert!(
 | 
			
		||||
            epoint.is_file(),
 | 
			
		||||
@@ -317,6 +324,8 @@ mod create {
 | 
			
		||||
            entry.data().list(["database"].to_vec()).unwrap(),
 | 
			
		||||
            Vec::<String>::new()
 | 
			
		||||
        );
 | 
			
		||||
        let sess = [ENTRY];
 | 
			
		||||
        assert_eq!(mtt.session, sess);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[async_std::test]
 | 
			
		||||
@@ -341,13 +350,16 @@ mod create {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[async_std::test]
 | 
			
		||||
    async fn existing_entry_point() {
 | 
			
		||||
    async fn existing_entry_point() -> Result<(), DBError> {
 | 
			
		||||
        let dir = tempdir().unwrap();
 | 
			
		||||
        let data = DataType::new("store").unwrap();
 | 
			
		||||
        Entry::new(dir.path().join(ENTRY), data.clone())
 | 
			
		||||
            .await
 | 
			
		||||
            .unwrap();
 | 
			
		||||
        MoreThanText::new(dir.path()).await.unwrap();
 | 
			
		||||
        match MoreThanText::new(dir.path()).await {
 | 
			
		||||
            Ok(_) => Ok(()),
 | 
			
		||||
            Err(err) => Err(err),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[async_std::test]
 | 
			
		||||
@@ -360,4 +372,13 @@ mod create {
 | 
			
		||||
            Err(_) => Ok(()),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[async_std::test]
 | 
			
		||||
    async fn set_session() {
 | 
			
		||||
        let dir = tempdir().unwrap();
 | 
			
		||||
        let mut mtt = MoreThanText::new(dir.path()).await.unwrap();
 | 
			
		||||
        let sess = ["different".to_string()];
 | 
			
		||||
        mtt.set_session(sess.to_vec());
 | 
			
		||||
        assert_eq!(mtt.session, sess);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user