Skip to main content

jmap_filenode_types/
backend.rs

1//! Property selector enum and [`jmap_types`] trait impls for [`crate::FileNode`].
2//!
3//! Defined here so `jmap-filenode-server` can use them without violating the
4//! orphan rule (`JmapObject` is foreign; `FileNode` is local to this crate).
5
6use jmap_types::{GetObject, JmapObject, PatchObject, QueryObject, SetObject};
7
8// ---------------------------------------------------------------------------
9// Property selector enum
10// ---------------------------------------------------------------------------
11
12/// Property selector for [`crate::FileNode`] `/get` and `/set`.
13#[derive(Debug, Clone, PartialEq, Eq, Hash)]
14#[non_exhaustive]
15pub enum FileNodeProperty {
16    /// The `id` property (draft-ietf-jmap-filenode-13 §3.1).
17    Id,
18    /// The `parentId` property (draft-ietf-jmap-filenode-13 §3.1).
19    ParentId,
20    /// The `nodeType` property (draft-ietf-jmap-filenode-13 §3.1).
21    NodeType,
22    /// The `blobId` property (draft-ietf-jmap-filenode-13 §3.1).
23    BlobId,
24    /// The `target` property (draft-ietf-jmap-filenode-13 §3.1).
25    Target,
26    /// The `size` property (draft-ietf-jmap-filenode-13 §3.1).
27    Size,
28    /// The `name` property (draft-ietf-jmap-filenode-13 §3.1).
29    Name,
30    /// The `type` property (media type) (draft-ietf-jmap-filenode-13 §3.1).
31    MediaType,
32    /// The `created` property (draft-ietf-jmap-filenode-13 §3.1).
33    Created,
34    /// The `modified` property (draft-ietf-jmap-filenode-13 §3.1).
35    Modified,
36    /// The `accessed` property (draft-ietf-jmap-filenode-13 §3.1).
37    Accessed,
38    /// The `changed` property (draft-ietf-jmap-filenode-13 §3.1).
39    Changed,
40    /// The `executable` property (draft-ietf-jmap-filenode-13 §3.1).
41    Executable,
42    /// The `isSubscribed` property (draft-ietf-jmap-filenode-13 §3.1).
43    IsSubscribed,
44    /// The `myRights` property (draft-ietf-jmap-filenode-13 §3.1).
45    MyRights,
46    /// The `shareWith` property (draft-ietf-jmap-filenode-13 §3.1).
47    ShareWith,
48    /// The `role` property (draft-ietf-jmap-filenode-13 §3.1).
49    Role,
50}
51
52// ---------------------------------------------------------------------------
53// JmapObject / marker trait impls
54// ---------------------------------------------------------------------------
55
56impl JmapObject for crate::FileNode {
57    const TYPE_NAME: &'static str = "FileNode";
58    type Property = FileNodeProperty;
59}
60
61impl GetObject for crate::FileNode {}
62
63impl SetObject for crate::FileNode {
64    type Patch = PatchObject;
65}
66
67impl QueryObject for crate::FileNode {
68    type Filter = crate::FileNodeFilterCondition;
69    type Comparator = serde_json::Value;
70}