Skip to main content

auditaur_core/storage/
mod.rs

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