use jmap_types::{GetObject, JmapObject, PatchObject, QueryObject, SetObject};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum MailboxProperty {
Id,
Name,
ParentId,
Role,
SortOrder,
TotalEmails,
UnreadEmails,
TotalThreads,
UnreadThreads,
MyRights,
IsSubscribed,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ThreadProperty {
Id,
EmailIds,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum EmailProperty {
Id,
BlobId,
ThreadId,
MailboxIds,
Keywords,
Size,
ReceivedAt,
MessageId,
InReplyTo,
References,
Subject,
From,
To,
Cc,
Bcc,
ReplyTo,
Sender,
SentAt,
HasAttachment,
Preview,
BodyStructure,
TextBody,
HtmlBody,
Attachments,
BodyValues,
Headers,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum IdentityProperty {
Id,
Name,
Email,
ReplyTo,
Bcc,
TextSignature,
HtmlSignature,
MayDelete,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum EmailSubmissionProperty {
Id,
IdentityId,
EmailId,
ThreadId,
Envelope,
SendAt,
UndoStatus,
DeliveryStatus,
DsnBlobIds,
MdnBlobIds,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum VacationResponseProperty {
Id,
IsEnabled,
FromDate,
ToDate,
Subject,
TextBody,
HtmlBody,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum SearchSnippetProperty {
EmailId,
Subject,
Preview,
}
#[cfg(feature = "sieve")]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum SieveScriptProperty {
Id,
Name,
BlobId,
IsActive,
}
impl JmapObject for crate::Mailbox {
const TYPE_NAME: &'static str = "Mailbox";
type Property = MailboxProperty;
}
impl GetObject for crate::Mailbox {}
impl SetObject for crate::Mailbox {
type Patch = PatchObject;
}
impl QueryObject for crate::Mailbox {
type Filter = crate::MailboxFilterCondition;
type Comparator = serde_json::Value;
}
impl JmapObject for crate::Thread {
const TYPE_NAME: &'static str = "Thread";
type Property = ThreadProperty;
}
impl GetObject for crate::Thread {}
impl JmapObject for crate::Email {
const TYPE_NAME: &'static str = "Email";
type Property = EmailProperty;
}
impl GetObject for crate::Email {}
impl SetObject for crate::Email {
type Patch = PatchObject;
}
impl QueryObject for crate::Email {
type Filter = crate::EmailFilter;
type Comparator = crate::EmailComparator;
}
impl JmapObject for crate::Identity {
const TYPE_NAME: &'static str = "Identity";
type Property = IdentityProperty;
}
impl GetObject for crate::Identity {}
impl SetObject for crate::Identity {
type Patch = PatchObject;
}
impl JmapObject for crate::EmailSubmission {
const TYPE_NAME: &'static str = "EmailSubmission";
type Property = EmailSubmissionProperty;
}
impl GetObject for crate::EmailSubmission {}
impl SetObject for crate::EmailSubmission {
type Patch = PatchObject;
}
impl QueryObject for crate::EmailSubmission {
type Filter = crate::EmailSubmissionFilter;
type Comparator = serde_json::Value;
}
impl JmapObject for crate::VacationResponse {
const TYPE_NAME: &'static str = "VacationResponse";
type Property = VacationResponseProperty;
}
impl GetObject for crate::VacationResponse {}
impl SetObject for crate::VacationResponse {
type Patch = PatchObject;
}
impl JmapObject for crate::SearchSnippet {
const TYPE_NAME: &'static str = "SearchSnippet";
type Property = SearchSnippetProperty;
}
#[cfg(feature = "sieve")]
impl JmapObject for crate::sieve::SieveScript {
const TYPE_NAME: &'static str = "SieveScript";
type Property = SieveScriptProperty;
}
#[cfg(feature = "sieve")]
impl GetObject for crate::sieve::SieveScript {}
#[cfg(feature = "sieve")]
impl SetObject for crate::sieve::SieveScript {
type Patch = PatchObject;
}