pub struct SyncDb { /* private fields */ }Expand description
SQLite database for sync state and task queue
Implementations§
Source§impl SyncDb
impl SyncDb
Sourcepub fn open_in_memory() -> Result<Self>
pub fn open_in_memory() -> Result<Self>
Open an in-memory database (for testing)
Sourcepub fn get_or_create_profile(&self, display_name: &str) -> Result<i32>
pub fn get_or_create_profile(&self, display_name: &str) -> Result<i32>
Get or create a profile by display name
Sourcepub fn get_profile_id(&self, display_name: &str) -> Result<Option<i32>>
pub fn get_profile_id(&self, display_name: &str) -> Result<Option<i32>>
Get profile ID by display name
Sourcepub fn get_latest_profile(&self) -> Result<Option<(i32, String)>>
pub fn get_latest_profile(&self) -> Result<Option<(i32, String)>>
Get the most recently synced profile, falling back to most recently created.
Returns (profile_id, display_name) if at least one profile exists.
Sourcepub fn update_profile_sync_time(&self, profile_id: i32) -> Result<()>
pub fn update_profile_sync_time(&self, profile_id: i32) -> Result<()>
Update profile’s last sync time
Sourcepub fn get_sync_state(
&self,
profile_id: i32,
data_type: &str,
) -> Result<Option<SyncState>>
pub fn get_sync_state( &self, profile_id: i32, data_type: &str, ) -> Result<Option<SyncState>>
Get sync state for a profile and data type
Sourcepub fn update_sync_state(&self, state: &SyncState) -> Result<()>
pub fn update_sync_state(&self, state: &SyncState) -> Result<()>
Update sync state
Sourcepub fn get_backfill_state(
&self,
profile_id: i32,
data_type: &str,
) -> Result<Option<(NaiveDate, NaiveDate, bool)>>
pub fn get_backfill_state( &self, profile_id: i32, data_type: &str, ) -> Result<Option<(NaiveDate, NaiveDate, bool)>>
Get backfill state for a profile and data type Returns (frontier_date, target_date, is_complete)
Sourcepub fn set_backfill_state(
&self,
profile_id: i32,
data_type: &str,
frontier_date: NaiveDate,
target_date: NaiveDate,
is_complete: bool,
) -> Result<()>
pub fn set_backfill_state( &self, profile_id: i32, data_type: &str, frontier_date: NaiveDate, target_date: NaiveDate, is_complete: bool, ) -> Result<()>
Initialize or update backfill state
Sourcepub fn update_backfill_frontier(
&self,
profile_id: i32,
data_type: &str,
new_frontier: NaiveDate,
) -> Result<()>
pub fn update_backfill_frontier( &self, profile_id: i32, data_type: &str, new_frontier: NaiveDate, ) -> Result<()>
Update backfill frontier (moves the frontier date backward as we sync older data)
Sourcepub fn mark_backfill_complete(
&self,
profile_id: i32,
data_type: &str,
) -> Result<()>
pub fn mark_backfill_complete( &self, profile_id: i32, data_type: &str, ) -> Result<()>
Mark backfill as complete
Sourcepub fn is_backfill_complete(
&self,
profile_id: i32,
data_type: &str,
) -> Result<bool>
pub fn is_backfill_complete( &self, profile_id: i32, data_type: &str, ) -> Result<bool>
Check if backfill is complete for a data type
Sourcepub fn pop_task(
&self,
profile_id: i32,
pipeline: Option<SyncPipeline>,
) -> Result<Option<SyncTask>>
pub fn pop_task( &self, profile_id: i32, pipeline: Option<SyncPipeline>, ) -> Result<Option<SyncTask>>
Pop the next task from the queue for a profile
Sourcepub fn pop_task_by_type(
&self,
profile_id: i32,
task_type: &str,
pipeline: Option<SyncPipeline>,
) -> Result<Option<SyncTask>>
pub fn pop_task_by_type( &self, profile_id: i32, task_type: &str, pipeline: Option<SyncPipeline>, ) -> Result<Option<SyncTask>>
Pop the next task for a profile and task type
Sourcepub fn mark_task_in_progress(&self, task_id: i64) -> Result<()>
pub fn mark_task_in_progress(&self, task_id: i64) -> Result<()>
Mark a task as in progress
Sourcepub fn mark_task_completed(&self, task_id: i64) -> Result<()>
pub fn mark_task_completed(&self, task_id: i64) -> Result<()>
Mark a task as completed
Sourcepub fn mark_task_failed(
&self,
task_id: i64,
error: &str,
retry_delay_secs: i64,
) -> Result<()>
pub fn mark_task_failed( &self, task_id: i64, error: &str, retry_delay_secs: i64, ) -> Result<()>
Mark a task as failed
Sourcepub fn recover_in_progress_tasks(&self) -> Result<u32>
pub fn recover_in_progress_tasks(&self) -> Result<u32>
Recover in-progress tasks (after crash)
Sourcepub fn count_pending_tasks(
&self,
profile_id: i32,
pipeline: Option<SyncPipeline>,
) -> Result<u32>
pub fn count_pending_tasks( &self, profile_id: i32, pipeline: Option<SyncPipeline>, ) -> Result<u32>
Count pending tasks
Sourcepub fn count_tasks_by_status(
&self,
profile_id: i32,
) -> Result<(u32, u32, u32, u32)>
pub fn count_tasks_by_status( &self, profile_id: i32, ) -> Result<(u32, u32, u32, u32)>
Count tasks by status
Sourcepub fn count_tasks_by_type(
&self,
profile_id: i32,
pipeline: Option<SyncPipeline>,
) -> Result<(u32, u32, u32, u32)>
pub fn count_tasks_by_type( &self, profile_id: i32, pipeline: Option<SyncPipeline>, ) -> Result<(u32, u32, u32, u32)>
Count pending/in_progress/failed tasks by type
Returns (activities, gpx, health, performance) counts
Sourcepub fn cleanup_completed_tasks(&self, max_age_days: i32) -> Result<u32>
pub fn cleanup_completed_tasks(&self, max_age_days: i32) -> Result<u32>
Clean up old completed tasks
Sourcepub fn has_health_data(
&self,
_profile_id: i32,
_date: NaiveDate,
) -> Result<bool>
pub fn has_health_data( &self, _profile_id: i32, _date: NaiveDate, ) -> Result<bool>
Check if health data exists for a date
Sourcepub fn has_performance_data(
&self,
_profile_id: i32,
_date: NaiveDate,
) -> Result<bool>
pub fn has_performance_data( &self, _profile_id: i32, _date: NaiveDate, ) -> Result<bool>
Check if performance data exists for a date
Sourcepub fn reset_failed_tasks(&self) -> Result<u32>
pub fn reset_failed_tasks(&self) -> Result<u32>
Reset all failed tasks to pending (clear retry delays)
Sourcepub fn clear_pending_tasks(&self) -> Result<u32>
pub fn clear_pending_tasks(&self) -> Result<u32>
Clear all pending and failed tasks