Skip to main content

tandem_server/shared_resources/
types.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct SharedResourceRecord {
6    pub key: String,
7    pub value: Value,
8    pub rev: u64,
9    pub updated_at_ms: u64,
10    pub updated_by: String,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub ttl_ms: Option<u64>,
13}
14
15#[derive(Debug, Clone, Serialize)]
16pub struct ResourceConflict {
17    pub key: String,
18    pub expected_rev: Option<u64>,
19    pub current_rev: Option<u64>,
20}
21
22#[derive(Debug, Clone, Serialize)]
23#[serde(tag = "type", rename_all = "snake_case")]
24pub enum ResourceStoreError {
25    InvalidKey { key: String },
26    RevisionConflict(ResourceConflict),
27    PersistFailed { message: String },
28}