From 6d443f13fdeb78ea9dffab8762222572038d2ce3 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 8 May 2025 14:18:53 +0100 Subject: feat(filamento): OPFS database --- filamento/src/error.rs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'filamento/src/error.rs') diff --git a/filamento/src/error.rs b/filamento/src/error.rs index 02f54ee..9334793 100644 --- a/filamento/src/error.rs +++ b/filamento/src/error.rs @@ -9,7 +9,10 @@ use thiserror::Error; pub use lampada::error::CommandError; pub use lampada::error::ConnectionError; +use tokio::sync::mpsc::error::SendError; +use tokio::sync::oneshot::error::RecvError; +use crate::db::DbCommand; use crate::files::FileStore; // for the client logic impl @@ -166,8 +169,20 @@ pub enum ResponseError { } #[derive(Debug, Error, Clone)] -#[error("database error: {0}")] -pub struct DatabaseError(pub Serializeable>); +pub enum DatabaseError { + #[error("database error: {0}")] + Database(Serializeable>), + #[error("database command send: {0}")] + Send(Arc>), + #[error("database result recv: {0}")] + Recv(#[from] RecvError), +} + +impl From> for DatabaseError { + fn from(e: SendError) -> Self { + Self::Send(Arc::new(e)) + } +} pub enum Serializeable { String(String), @@ -227,7 +242,7 @@ impl<'de> serde::Deserialize<'de> for DatabaseError { D: serde::Deserializer<'de>, { let string = deserializer.deserialize_string(StringVisitor)?; - Ok(Self(Serializeable::String(string))) + Ok(Self::Database(Serializeable::String(string))) } } @@ -246,7 +261,7 @@ impl serde::Serialize for DatabaseError { impl From for DatabaseError { fn from(e: rusqlite::Error) -> Self { - Self(Serializeable::Unserialized(Arc::new(e))) + Self::Database(Serializeable::Unserialized(Arc::new(e))) } } @@ -285,6 +300,8 @@ pub enum DatabaseOpenError { Io(Arc), #[error("invalid path")] InvalidPath, + #[error("tokio oneshot recv error: {0}")] + Recv(#[from] tokio::sync::oneshot::error::RecvError), } // impl From for DatabaseOpenError { -- cgit