use crate::{
ActorRef, AttributeKey, AttributeRevisionNo, AttributeValue, CommitId, DeleteDirectoryBehavior,
DestinationBehavior, InodeId, RevisionNo,
};
use std::collections::BTreeMap;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CommitOptions {
pub actor: ActorRef,
pub commit_id: Option<CommitId>,
pub message: Option<String>,
}
impl CommitOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
actor,
commit_id: None,
message: None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct StatPathOptions {
pub include_attributes: bool,
}
impl Default for StatPathOptions {
fn default() -> Self {
Self {
include_attributes: true,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct ListPathEntriesOptions {
pub include_attributes: bool,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UpdateAttributesOptions {
pub set: BTreeMap<AttributeKey, AttributeValue>,
pub remove: Vec<AttributeKey>,
pub commit: CommitOptions,
pub expected_inode_id: Option<InodeId>,
pub expected_attributes_revision_no: Option<AttributeRevisionNo>,
}
impl UpdateAttributesOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
set: BTreeMap::new(),
remove: Vec::new(),
commit: CommitOptions::new(actor),
expected_inode_id: None,
expected_attributes_revision_no: None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PutFileOptions {
pub behavior: DestinationBehavior,
pub commit: CommitOptions,
pub expected_revision_no: Option<RevisionNo>,
}
impl PutFileOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
behavior: DestinationBehavior::NoReplace,
commit: CommitOptions::new(actor),
expected_revision_no: None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateDirectoryOptions {
pub commit: CommitOptions,
pub parents: bool,
}
impl CreateDirectoryOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
commit: CommitOptions::new(actor),
parents: false,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DeleteOptions {
pub behavior: DeleteDirectoryBehavior,
pub commit: CommitOptions,
pub expected_inode_id: Option<InodeId>,
}
impl DeleteOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
behavior: DeleteDirectoryBehavior::NonRecursive,
commit: CommitOptions::new(actor),
expected_inode_id: None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MoveOptions {
pub behavior: DestinationBehavior,
pub commit: CommitOptions,
}
impl MoveOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
behavior: DestinationBehavior::NoReplace,
commit: CommitOptions::new(actor),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CopyOptions {
pub behavior: DestinationBehavior,
pub commit: CommitOptions,
}
impl CopyOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
behavior: DestinationBehavior::NoReplace,
commit: CommitOptions::new(actor),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RestoreRevisionOptions {
pub commit: CommitOptions,
}
impl RestoreRevisionOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
commit: CommitOptions::new(actor),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UndeleteOptions {
pub commit: CommitOptions,
}
impl UndeleteOptions {
pub fn new(actor: ActorRef) -> Self {
Self {
commit: CommitOptions::new(actor),
}
}
}