use std::path::PathBuf;
use serde::Serialize;
use url::Url;
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct SessionRequest {
pub repo: String,
pub branch: Option<String>,
pub base: Option<String>,
pub execution_checkout: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize)]
#[serde(transparent)]
pub struct SessionToken(pub String);
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct Session {
pub token: SessionToken,
pub worktree: PathBuf,
pub branch: String,
pub base: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum Provenance {
Complete,
IncompleteStep,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct PreservedBranch {
pub branch: String,
pub base: String,
pub provenance: Provenance,
pub change_url: Option<Url>,
pub change_base: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum Scope {
All,
Repo(String),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct Recoverable {
pub identity: String,
pub branch: PreservedBranch,
pub checkout: PathBuf,
pub stopped_because: String,
pub recover_command: Vec<String>,
}