Skip to main content

codex_sync/history/
model.rs

1use serde::Serialize;
2use serde_json::Value;
3use std::{collections::BTreeMap, path::PathBuf};
4
5#[derive(Debug)]
6pub struct Paths {
7    pub(super) codex_home: PathBuf,
8    pub(super) config: PathBuf,
9    pub(super) database: PathBuf,
10    pub(super) session_index: PathBuf,
11    pub(super) backup_root: PathBuf,
12}
13
14#[derive(Debug, Serialize)]
15pub struct Report {
16    pub current_provider: String,
17    pub current_model: Option<String>,
18    pub total_threads: usize,
19    pub database_counts: BTreeMap<String, usize>,
20    pub model_counts: BTreeMap<String, usize>,
21    pub database_rows_to_change: usize,
22    pub rollout_counts: BTreeMap<String, usize>,
23    pub rollout_model_counts: BTreeMap<String, usize>,
24    pub rollout_files: usize,
25    pub rollout_files_to_change: usize,
26    pub duplicate_session_meta_lines: usize,
27    pub missing_session_index_entries: usize,
28    pub stale_session_index_entries: usize,
29    pub missing_rollout_files: usize,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub backup: Option<PathBuf>,
32}
33
34#[derive(Debug, Serialize)]
35pub struct DoctorReport {
36    pub database_integrity_ok: bool,
37    pub database_integrity_messages: Vec<String>,
38    pub total_threads: usize,
39    pub sidebar_threads: usize,
40    pub rollout_files: usize,
41    pub invalid_rollout_files: usize,
42    pub missing_session_meta_files: usize,
43    pub duplicate_session_meta_lines: usize,
44    pub orphan_rollout_files: usize,
45    pub missing_rollout_files: usize,
46    pub invalid_session_index_lines: usize,
47    pub duplicate_session_index_ids: usize,
48    pub missing_session_index_entries: usize,
49    pub stale_session_index_entries: usize,
50    pub clean: bool,
51    pub repaired: bool,
52    pub repaired_session_index: bool,
53    pub restored_rollout_files: usize,
54    pub deduplicated_session_meta_files: usize,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub backup: Option<PathBuf>,
57}
58
59#[derive(Debug)]
60pub(super) struct Assignment {
61    pub(super) provider: String,
62    pub(super) model: Option<String>,
63}
64
65#[derive(Debug)]
66pub(super) struct SessionRecord {
67    pub(super) path: PathBuf,
68    pub(super) provider: String,
69    pub(super) model: Option<String>,
70    pub(super) session_meta_lines: usize,
71}
72
73#[derive(Debug)]
74pub(super) struct SidebarThread {
75    pub(super) id: String,
76    pub(super) title: String,
77    pub(super) updated_at: String,
78    pub(super) rollout_path: Option<PathBuf>,
79}
80
81#[derive(Debug, Default)]
82pub(super) struct IndexDiagnostics {
83    pub(super) entries: BTreeMap<String, Value>,
84    pub(super) invalid_lines: usize,
85    pub(super) duplicate_ids: usize,
86}
87
88#[derive(Debug, Default)]
89pub(super) struct RolloutDiagnostics {
90    pub(super) files: usize,
91    pub(super) invalid_files: usize,
92    pub(super) missing_session_meta_files: usize,
93    pub(super) duplicate_session_meta_lines: usize,
94    pub(super) thread_ids: Vec<String>,
95}
96
97#[derive(Debug)]
98pub(super) struct RolloutRecovery {
99    pub(super) target: PathBuf,
100    pub(super) content: Vec<u8>,
101}
102
103#[derive(Debug)]
104pub(super) struct SessionMetaRepair {
105    pub(super) target: PathBuf,
106    pub(super) original: Vec<u8>,
107    pub(super) repaired: Vec<u8>,
108}