The error_log table had no retention policy: every backend error was
appended forever, so across months of dogfooding it grew unbounded. That
silently bloats the diagnostic-bundle export and slows the
list_recent_errors query the Settings → About panel runs.
- New `kon_storage::prune_error_log(pool, keep_days)` does a single
`DELETE FROM error_log WHERE timestamp < datetime('now', '-Nd days')`
and returns the row count removed.
- src-tauri/src/lib.rs runs it once during setup() with a const
ERROR_LOG_RETENTION_DAYS = 90. Failure is logged to stderr but does not
block startup — a prune that fails is strictly less important than the
app coming up.
- Test: insert three rows at now / -30d / -200d, verify a 90-day prune
removes only the oldest, and a subsequent 14-day prune removes the
-30d row. Storage suite at 60/60.
https://claude.ai/code/session_0189xUb6ie6t9qHkzatGZ9Rb
25 lines
1.4 KiB
Rust
25 lines
1.4 KiB
Rust
pub mod database;
|
|
pub mod file_storage;
|
|
pub mod migrations;
|
|
|
|
/// Stable identifier for the seeded Default profile (see migration v6).
|
|
/// The Default profile cannot be renamed or deleted — guarded by SQLite triggers.
|
|
pub const DEFAULT_PROFILE_ID: &str = "00000000-0000-0000-0000-000000000001";
|
|
|
|
pub use database::{
|
|
add_profile_term, complete_subtask_and_check_parent, complete_task, count_transcripts,
|
|
create_profile, delete_implementation_rule, delete_profile, delete_profile_term, delete_task,
|
|
delete_transcript, get_implementation_rule, get_profile, get_setting, get_task_by_id,
|
|
get_transcript, init, init_readonly, insert_implementation_rule, insert_subtask, insert_task,
|
|
insert_transcript, list_feedback_examples, list_implementation_rules, list_profile_terms,
|
|
list_profiles, list_recent_completions, list_recent_errors, list_subtasks, list_tasks,
|
|
list_transcripts, list_transcripts_paged, log_error, mark_implementation_rule_fired,
|
|
prune_error_log, record_feedback, search_transcripts, set_implementation_rule_enabled,
|
|
set_setting,
|
|
set_task_energy, uncomplete_task, update_profile, update_task, update_transcript,
|
|
update_transcript_meta, DailyCompletionCount, ErrorLogRow, FeedbackRow, FeedbackTargetType,
|
|
ImplementationRuleRow, InsertTranscriptParams, ProfileRow, ProfileTermRow,
|
|
RecordFeedbackParams, TaskRow, TranscriptRow,
|
|
};
|
|
pub use file_storage::{app_data_dir, crashes_dir, database_path, logs_dir, recordings_dir};
|