tauri_plugin_cache/
models.rs1use serde::{de::DeserializeOwned, Deserialize, Serialize};
2
3pub const COMPRESSION_THRESHOLD: usize = 1024; #[derive(Debug, Clone, Deserialize, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct SetItemOptions {
10 pub ttl: Option<u64>,
12 pub compress: Option<bool>,
14}
15
16#[derive(Debug, Clone, Deserialize, Serialize)]
18#[serde(rename_all = "camelCase")]
19pub struct CacheItem<T> {
20 pub value: T,
22 pub expires_at: Option<u64>,
24 pub is_compressed: Option<bool>,
26}
27
28#[derive(Debug, Serialize)]
30#[serde(rename_all = "camelCase")]
31pub struct SetRequest<T>
32where
33 T: Serialize + DeserializeOwned,
34{
35 pub key: String,
37 pub value: T,
39 pub options: Option<SetItemOptions>,
41}
42
43impl<'de, T> serde::Deserialize<'de> for SetRequest<T>
44where
45 T: Serialize + DeserializeOwned,
46{
47 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
48 where
49 D: serde::Deserializer<'de>,
50 {
51 #[derive(Deserialize)]
52 struct Helper {
53 key: String,
54 value: serde_json::Value,
55 options: Option<SetItemOptions>,
56 }
57
58 let helper = Helper::deserialize(deserializer)?;
59
60 let value = serde_json::from_value(helper.value).map_err(serde::de::Error::custom)?;
61
62 Ok(SetRequest {
63 key: helper.key,
64 value,
65 options: helper.options,
66 })
67 }
68}
69
70#[derive(Debug, Deserialize, Serialize)]
72#[serde(rename_all = "camelCase")]
73pub struct GetRequest {
74 pub key: String,
76}
77
78#[derive(Debug, Deserialize, Serialize)]
80#[serde(rename_all = "camelCase")]
81pub struct RemoveRequest {
82 pub key: String,
84}
85
86#[derive(Debug, Deserialize, Serialize)]
88#[serde(rename_all = "camelCase")]
89pub struct HasRequest {
90 pub key: String,
92}
93
94#[derive(Debug, Clone, Default, Deserialize, Serialize)]
96#[serde(rename_all = "camelCase")]
97pub struct CacheStats {
98 pub total_size: usize,
100 pub active_size: usize,
102}
103
104#[derive(Debug, Clone, Default, Deserialize, Serialize)]
106#[serde(rename_all = "camelCase")]
107pub struct BooleanResponse {
108 pub value: bool,
110}
111
112#[derive(Debug, Clone, Default, Deserialize, Serialize)]
114#[serde(rename_all = "camelCase")]
115pub struct EmptyResponse {}
116
117#[derive(Clone, Serialize, Deserialize, Debug)]
119pub struct CompressionConfig {
120 pub enabled: bool,
122 pub level: u32,
124 pub threshold: usize,
126}
127
128impl Default for CompressionConfig {
129 fn default() -> Self {
130 Self {
131 enabled: false,
132 level: 6, threshold: COMPRESSION_THRESHOLD,
134 }
135 }
136}
137
138#[derive(Debug, Clone, Deserialize, Serialize)]
140#[serde(rename_all = "camelCase")]
141pub struct CacheConfig {
142 pub cache_dir: Option<String>,
144 pub cache_file_name: Option<String>,
146 pub cleanup_interval: Option<u64>,
148 pub default_compression: Option<bool>,
150 pub compression_level: Option<u32>,
152 pub compression_threshold: Option<usize>,
154}
155
156impl Default for CacheConfig {
157 fn default() -> Self {
158 Self {
159 cache_dir: None,
160 cache_file_name: None,
161 cleanup_interval: Some(60), default_compression: Some(false), compression_level: Some(6), compression_threshold: Some(1024), }
166 }
167}