use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("Repository not found: {0}")]
RepoNotFound(String),
#[error("Ambiguous repository name: {0}")]
AmbiguousRepoName(String),
#[error("Symbol not found: {0}")]
SymbolNotFound(String),
#[error("Session not found: {0}")]
SessionNotFound(String),
#[error("Session expired: {0}")]
SessionExpired(String),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("Invalid auth token")]
InvalidAuth,
#[error("Conflict: {0}")]
Conflict(String),
#[error("Parse error: {0}")]
ParseError(String),
#[error("Unsupported language: {0}")]
UnsupportedLanguage(String),
#[error("Database error: {0}")]
Database(#[from] sqlx::Error),
#[error("Git error: {0}")]
Git(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("{0}")]
Internal(String),
}
pub type Result<T> = std::result::Result<T, Error>;