use thiserror::Error;
#[derive(Debug, Error)]
pub(crate) enum Error {
#[error("No Company")]
NoCompany,
#[error("Client '{0}' already exists")]
ClientExists(String),
#[error("Worker '{0}' already exists")]
WorkerExists(String),
#[error("Worker '{0}' not found")]
WorkerNotFound(String),
#[error("Client '{0}' not found")]
ClientNotFound(String),
#[error("Tag '{0}' not found")]
TagNotFound(String),
#[error("Tag '{0}' already exists")]
TagExists(String),
#[error("Unknown worker '{0}'")]
UnknownWorker(String),
#[error("Unknown client '{0}'")]
UnknownClient(String),
#[error("Job {0} not found")]
JobNotFound(usize),
#[error("Work {1} not found in job {0}")]
WorkNotFound(usize, usize),
#[error("Invoice {0} not found")]
InvoiceNotFound(usize),
#[error("Already working since {start} on {desc} for client {client}")]
AlreadyWorking {
start: String,
desc: String,
client: String,
},
#[error("Subject already existing: '{0}'")]
DescriptionExists(String),
#[error("Subject missing")]
DescriptionMissing,
#[error("Currently not working")]
NotWorking,
#[error("Work starts at {0} after it ends ay {1}.")]
EndsBeforeStart(String, String),
#[error("{0}")]
Entity(#[from] crate::entities::Error),
#[error("{0}")]
Inquire(#[from] inquire::error::InquireError),
}
pub(crate) type Result<T> = std::result::Result<T, Error>;