Skip to main content

auditaur_core/storage/
mod.rs

1use crate::model::{
2    FrontendError, LogRecord, Session, SpanEventRecord, SpanRecord, TauriEventRecord, TauriIpcCall,
3    TauriWindowState,
4};
5use serde::{Deserialize, Serialize};
6use thiserror::Error;
7
8#[derive(Debug, Error)]
9pub enum StorageError {
10    #[error("storage backend error: {0}")]
11    Backend(String),
12}
13
14pub trait TelemetryStore {
15    fn create_session(&self, session: &Session) -> Result<(), StorageError>;
16    fn insert_log(&self, log: &LogRecord) -> Result<(), StorageError>;
17    fn insert_span(&self, span: &SpanRecord) -> Result<(), StorageError>;
18    fn insert_span_event(&self, event: &SpanEventRecord) -> Result<(), StorageError>;
19    fn insert_frontend_error(&self, error: &FrontendError) -> Result<(), StorageError>;
20    fn insert_tauri_ipc_call(&self, call: &TauriIpcCall) -> Result<(), StorageError>;
21    fn insert_tauri_event(&self, event: &TauriEventRecord) -> Result<(), StorageError>;
22    fn insert_tauri_window_state(&self, window: &TauriWindowState) -> Result<(), StorageError>;
23}
24
25#[derive(Debug, Clone, Default, PartialEq, Eq)]
26pub struct LogQuery {
27    pub session_id: Option<String>,
28    pub trace_id: Option<String>,
29    pub limit: Option<usize>,
30}
31
32#[derive(Debug, Clone, Default, PartialEq, Eq)]
33pub struct SpanQuery {
34    pub session_id: Option<String>,
35    pub trace_id: Option<String>,
36    pub limit: Option<usize>,
37}
38
39#[derive(Debug, Clone, Default, PartialEq, Eq)]
40pub struct SpanEventQuery {
41    pub session_id: Option<String>,
42    pub trace_id: Option<String>,
43    pub limit: Option<usize>,
44}
45
46#[derive(Debug, Clone, Default, PartialEq, Eq)]
47pub struct FrontendErrorQuery {
48    pub session_id: Option<String>,
49    pub trace_id: Option<String>,
50    pub limit: Option<usize>,
51}
52
53#[derive(Debug, Clone, Default, PartialEq, Eq)]
54pub struct TauriIpcQuery {
55    pub session_id: Option<String>,
56    pub trace_id: Option<String>,
57    pub limit: Option<usize>,
58}
59
60#[derive(Debug, Clone, Default, PartialEq, Eq)]
61pub struct TauriEventQuery {
62    pub session_id: Option<String>,
63    pub trace_id: Option<String>,
64    pub limit: Option<usize>,
65}
66
67#[derive(Debug, Clone, Default, PartialEq, Eq)]
68pub struct TauriWindowQuery {
69    pub session_id: Option<String>,
70    pub latest_only: bool,
71    pub limit: Option<usize>,
72}
73
74#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
75#[serde(rename_all = "camelCase")]
76pub struct RelatedTelemetryQuery {
77    pub session_id: Option<String>,
78    pub trace_id: Option<String>,
79    pub window_label: Option<String>,
80    pub start_time_unix_nanos: Option<i64>,
81    pub end_time_unix_nanos: Option<i64>,
82    pub limit: Option<usize>,
83}
84
85#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
86#[serde(rename_all = "camelCase")]
87pub struct RelatedTelemetry {
88    pub filter_notes: Vec<String>,
89    pub spans: Vec<SpanRecord>,
90    pub span_events: Vec<SpanEventRecord>,
91    pub logs: Vec<LogRecord>,
92    pub frontend_errors: Vec<FrontendError>,
93    pub tauri_ipc_calls: Vec<TauriIpcCall>,
94    pub tauri_events: Vec<TauriEventRecord>,
95    pub tauri_windows: Vec<TauriWindowState>,
96}