use crate::config::{PriceLookupType, StorageType};
use crate::kernel::settings::GitInputSelector;
use std::path::PathBuf;
#[derive(Debug, Default, Clone)]
pub struct OverlapConfig {
pub audit: AuditOverlap,
pub strict: StrictOverlap,
pub storage: StorageOverlap,
pub price: PriceOverlap,
pub report: ReportOverlap,
pub target: TargetOverlap,
}
#[derive(Debug, Default, Clone)]
pub struct StorageOverlap {
pub storage_type: Option<StorageType>,
pub input: Option<InputOverlap>,
}
#[derive(Debug, Clone)]
pub enum InputOverlap {
File(FileInputOverlap),
Fs(FsInputOverlap),
Git(GitInputOverlap),
}
#[derive(Debug, Clone)]
pub struct FileInputOverlap {
pub path: PathBuf,
}
#[derive(Debug, Clone)]
pub struct FsInputOverlap {
pub path: Option<String>,
pub dir: Option<String>,
pub ext: Option<String>,
}
#[derive(Debug, Clone)]
pub struct GitInputOverlap {
pub repo: Option<String>,
pub dir: Option<String>,
pub git_ref: Option<GitInputSelector>,
pub ext: Option<String>,
}
#[derive(Debug, Default, Clone)]
pub struct AuditOverlap {
pub mode: Option<bool>,
}
#[derive(Debug, Default, Clone)]
pub struct StrictOverlap {
pub mode: Option<bool>,
}
#[derive(Debug, Default, Clone)]
pub struct PriceOverlap {
pub db_path: Option<PathBuf>,
pub lookup_type: Option<PriceLookupType>,
pub before_time: Option<String>,
}
#[derive(Debug, Default, Clone)]
pub struct ReportOverlap {
pub commodity: Option<String>,
pub account_overlap: Option<Vec<String>>,
pub group_by: Option<String>,
pub inverted: bool,
}
#[derive(Debug, Default, Clone)]
pub struct TargetOverlap {
pub reports: Option<Vec<String>>,
pub exports: Option<Vec<String>>,
pub formats: Option<Vec<String>>,
}