use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug)]
pub enum Error {
#[error("Database error: {0}")]
Database(#[from] sea_orm::DbErr),
#[error("Sway IPC error: {0}")]
SwayIpc(String),
#[error("Workspace not found: {0}")]
WorkspaceNotFound(String),
#[error("Group not found: {0}")]
GroupNotFound(String),
#[error("Output not found: {0}")]
OutputNotFound(String),
#[error("Configuration error: {0}")]
Config(String),
#[error("Invalid arguments: {0}")]
InvalidArgs(String),
#[error("Sway is not running or IPC socket not available")]
SwayNotRunning,
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
}
impl serde::Serialize for Error {
fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(&self.to_string())
}
}