Skip to main content

auditaur_core/storage/
mod.rs

1use crate::model::{
2    FrontendError, LogRecord, Session, SpanRecord, TauriEventRecord, TauriIpcCall, TauriWindowState,
3};
4use thiserror::Error;
5
6#[derive(Debug, Error)]
7pub enum StorageError {
8    #[error("storage backend error: {0}")]
9    Backend(String),
10}
11
12pub trait TelemetryStore {
13    fn create_session(&self, session: &Session) -> Result<(), StorageError>;
14    fn insert_log(&self, log: &LogRecord) -> Result<(), StorageError>;
15    fn insert_span(&self, span: &SpanRecord) -> Result<(), StorageError>;
16    fn insert_frontend_error(&self, error: &FrontendError) -> Result<(), StorageError>;
17    fn insert_tauri_ipc_call(&self, call: &TauriIpcCall) -> Result<(), StorageError>;
18    fn insert_tauri_event(&self, event: &TauriEventRecord) -> Result<(), StorageError>;
19    fn insert_tauri_window_state(&self, window: &TauriWindowState) -> Result<(), StorageError>;
20}
21
22#[derive(Debug, Clone, Default, PartialEq, Eq)]
23pub struct LogQuery {
24    pub session_id: Option<String>,
25    pub trace_id: Option<String>,
26    pub limit: Option<usize>,
27}
28
29#[derive(Debug, Clone, Default, PartialEq, Eq)]
30pub struct SpanQuery {
31    pub session_id: Option<String>,
32    pub trace_id: Option<String>,
33    pub limit: Option<usize>,
34}
35
36#[derive(Debug, Clone, Default, PartialEq, Eq)]
37pub struct FrontendErrorQuery {
38    pub session_id: Option<String>,
39    pub trace_id: Option<String>,
40    pub limit: Option<usize>,
41}
42
43#[derive(Debug, Clone, Default, PartialEq, Eq)]
44pub struct TauriIpcQuery {
45    pub session_id: Option<String>,
46    pub trace_id: Option<String>,
47    pub limit: Option<usize>,
48}
49
50#[derive(Debug, Clone, Default, PartialEq, Eq)]
51pub struct TauriEventQuery {
52    pub session_id: Option<String>,
53    pub trace_id: Option<String>,
54    pub limit: Option<usize>,
55}
56
57#[derive(Debug, Clone, Default, PartialEq, Eq)]
58pub struct TauriWindowQuery {
59    pub session_id: Option<String>,
60    pub latest_only: bool,
61    pub limit: Option<usize>,
62}