use std::io;
use chrono::{DateTime, Utc};
use thiserror::Error;
#[derive(Debug, Error)]
pub enum IssueError {
#[error("issue #{id} was modified since last read; re-read and retry")]
Conflict { id: u32 },
#[error("issue #{id} is currently being worked on by session {owner}")]
Assigned {
id: u32,
owner: String,
acquired_at: DateTime<Utc>,
},
#[error("issue #{id} is not assigned to session {caller}; run `start` first")]
NotAssigned { id: u32, caller: String },
#[error("issue #{id} not found")]
NotFound { id: u32 },
#[error(transparent)]
Io(#[from] io::Error),
#[error(transparent)]
Other(#[from] anyhow::Error),
}