Skip to main content

fslite_command/
output.rs

1//! The typed operation codec's response half: one [`CommandOutput`] variant
2//! per distinct `FileSystem` return shape.
3
4use fslite_core::{
5    ByteRange, Change, LinkTarget, Node, Page, Revision, SearchMatch, TrashEntry, TreeEntry,
6    WorkspaceUsage,
7};
8use serde::{Deserialize, Serialize};
9
10/// The typed result of executing a [`crate::Command`].
11#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
12#[serde(rename_all = "snake_case")]
13pub enum CommandOutput {
14    Usage(WorkspaceUsage),
15    Node(Node),
16    Exists(bool),
17    Nodes(Page<Node>),
18    Tree(Page<TreeEntry>),
19    Content {
20        logical_length: u64,
21        revision: Revision,
22        range: ByteRange,
23        #[serde(with = "crate::bytes_b64")]
24        bytes: Vec<u8>,
25    },
26    Unit,
27    LinkTarget(LinkTarget),
28    Trash(TrashEntry),
29    TrashList(Page<TrashEntry>),
30    SearchMatches(Page<SearchMatch>),
31    Changes(Page<Change>),
32    Batch(Vec<fslite_core::BatchResult>),
33}