Skip to main content

spatio_types/
config.rs

1use serde::{Deserialize, Serialize};
2use std::time::SystemTime;
3
4/// Synchronization policy for persistence.
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
6#[serde(rename_all = "snake_case")]
7pub enum SyncPolicy {
8    /// Never `fsync`; rely on the OS to flush. Fastest, least durable.
9    Never,
10    /// `fsync` at most once per second. The interval is checked on each write,
11    /// so an idle database does not sync until the next write (or close).
12    #[default]
13    EverySecond,
14    /// `fsync` every `sync_batch_size` writes. Most durable, slowest.
15    Always,
16}
17
18/// File synchronization strategy (fsync vs fdatasync).
19#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
20#[serde(rename_all = "snake_case")]
21pub enum SyncMode {
22    #[default]
23    All,
24    Data,
25}
26
27/// Options for setting values.
28#[derive(Debug, Clone, Default, Serialize, Deserialize)]
29pub struct SetOptions {
30    /// Optional timestamp for the update (defaults to now if None)
31    pub timestamp: Option<SystemTime>,
32}
33
34impl SetOptions {
35    pub fn with_timestamp(timestamp: SystemTime) -> Self {
36        Self {
37            timestamp: Some(timestamp),
38        }
39    }
40}