use std::collections::BTreeMap;
use std::path::PathBuf;
use multihash::Multihash;
use serde::Serialize;
use crate::manifest::Row;
#[derive(Debug, PartialEq)]
pub enum Change {
Modified(PackageFileFingerprint), Added(PackageFileFingerprint), Removed(Row), }
pub type ChangeSet = BTreeMap<PathBuf, Change>;
#[derive(Debug, PartialEq, Eq, Default, Serialize)]
pub enum UpstreamState {
#[default]
UpToDate,
Behind,
Ahead,
Diverged,
}
#[derive(Clone, Debug, Default, PartialEq)]
pub struct PackageFileFingerprint {
pub size: u64,
pub hash: Multihash<256>,
}
#[derive(Debug, PartialEq, Default)]
pub struct InstalledPackageStatus {
pub upstream_state: UpstreamState,
pub changes: ChangeSet,
}
impl InstalledPackageStatus {
pub fn new(upstream_state: UpstreamState, changes: ChangeSet) -> Self {
Self {
upstream_state,
changes,
}
}
}