places/bookmark_sync/
mod.rs1pub mod engine;
6mod incoming;
7pub mod record;
8
9#[cfg(test)]
10mod tests;
11
12use crate::error::*;
13pub use engine::BookmarksSyncEngine;
14use rusqlite::types::{ToSql, ToSqlOutput};
15use rusqlite::Result as RusqliteResult;
16
17#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
20#[repr(u8)]
21pub enum SyncedBookmarkKind {
22 Bookmark = 1, Query = 2, Folder = 3, Livemark = 4, Separator = 5, }
28
29impl SyncedBookmarkKind {
30 #[inline]
31 pub fn from_u8(v: u8) -> Result<Self> {
32 match v {
33 1 => Ok(SyncedBookmarkKind::Bookmark),
34 2 => Ok(SyncedBookmarkKind::Query),
35 3 => Ok(SyncedBookmarkKind::Folder),
36 4 => Ok(SyncedBookmarkKind::Livemark),
37 5 => Ok(SyncedBookmarkKind::Separator),
38 _ => Err(Error::UnsupportedSyncedBookmarkKind(v)),
39 }
40 }
41}
42
43impl From<SyncedBookmarkKind> for dogear::Kind {
44 #[inline]
45 fn from(kind: SyncedBookmarkKind) -> dogear::Kind {
46 match kind {
47 SyncedBookmarkKind::Bookmark => dogear::Kind::Bookmark,
48 SyncedBookmarkKind::Query => dogear::Kind::Query,
49 SyncedBookmarkKind::Folder => dogear::Kind::Folder,
50 SyncedBookmarkKind::Livemark => dogear::Kind::Livemark,
51 SyncedBookmarkKind::Separator => dogear::Kind::Separator,
52 }
53 }
54}
55
56impl From<dogear::Kind> for SyncedBookmarkKind {
57 #[inline]
58 fn from(kind: dogear::Kind) -> SyncedBookmarkKind {
59 match kind {
60 dogear::Kind::Bookmark => SyncedBookmarkKind::Bookmark,
61 dogear::Kind::Query => SyncedBookmarkKind::Query,
62 dogear::Kind::Folder => SyncedBookmarkKind::Folder,
63 dogear::Kind::Livemark => SyncedBookmarkKind::Livemark,
64 dogear::Kind::Separator => SyncedBookmarkKind::Separator,
65 }
66 }
67}
68
69impl ToSql for SyncedBookmarkKind {
70 #[inline]
71 fn to_sql(&self) -> RusqliteResult<ToSqlOutput<'_>> {
72 Ok(ToSqlOutput::from(*self as u8))
73 }
74}
75
76#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
86#[repr(u8)]
87pub enum SyncedBookmarkValidity {
88 Valid = 1, Reupload = 2, Replace = 3, }
92
93impl SyncedBookmarkValidity {
94 #[inline]
95 pub fn from_u8(v: u8) -> Result<Self> {
96 match v {
97 1 => Ok(SyncedBookmarkValidity::Valid),
98 2 => Ok(SyncedBookmarkValidity::Reupload),
99 3 => Ok(SyncedBookmarkValidity::Replace),
100 _ => Err(Error::UnsupportedSyncedBookmarkValidity(v)),
101 }
102 }
103}
104
105impl From<SyncedBookmarkValidity> for dogear::Validity {
106 fn from(validity: SyncedBookmarkValidity) -> dogear::Validity {
107 match validity {
108 SyncedBookmarkValidity::Valid => dogear::Validity::Valid,
109 SyncedBookmarkValidity::Reupload => dogear::Validity::Reupload,
110 SyncedBookmarkValidity::Replace => dogear::Validity::Replace,
111 }
112 }
113}
114
115impl ToSql for SyncedBookmarkValidity {
116 fn to_sql(&self) -> RusqliteResult<ToSqlOutput<'_>> {
117 Ok(ToSqlOutput::from(*self as u8))
118 }
119}