use thiserror::Error;
#[derive(Debug, Error)]
pub enum SchedulerError {
#[error("invalid cron expression: {0}")]
InvalidCron(String),
#[error("database error: {0}")]
Database(#[from] zeph_db::SqlxError),
#[error("database error: {0}")]
Db(#[from] zeph_db::DbError),
#[error("task execution failed: {0}")]
TaskFailed(String),
#[error("job '{0}' already exists")]
DuplicateJob(String),
#[cfg(unix)]
#[error(
"daemon pid file is locked: another zeph serve instance appears to be running (pid {pid})"
)]
AlreadyRunning {
pid: u32,
},
#[cfg(unix)]
#[error("daemon detach failed: {0}")]
Detach(String),
#[cfg(unix)]
#[error("daemon I/O error: {0}")]
Io(String),
}