//! Repository trait definitions for data access abstraction. //! //! This module defines the contracts for data persistence operations. //! Implementations are provided by database-specific crates (e.g., `goingson-db-sqlite`). use crate::id_types::{ AnnotationId, AttachmentId, ContactEmailId, ContactId, ContactPhoneId, CustomFieldId, EmailAccountId, EmailId, EventId, MilestoneId, ProjectId, SavedViewId, SocialHandleId, StatusTokenId, SubtaskId, SyncAccountId, TaskId, UserId, }; use async_trait::async_trait; use chrono::{DateTime, NaiveDate, Utc}; use std::collections::HashSet; use uuid::Uuid; use crate::contact::{ Contact, ContactCustomField, ContactEmail, ContactEmailEntry, ContactPhone, NewContact, NewContactCustomField, NewContactEmail, NewContactPhone, NewSocialHandle, SocialHandle, UpdateContact, }; use crate::error::CoreError; use crate::models::{ Annotation, Attachment, Email, EmailAccount, EmailAuthType, EmailThread, Event, FolderSyncState, NewAttachment, NewEmail, NewEmailWithTracking, NewEvent, NewProject, NewSavedView, NewTask, PositiveMinutes, Project, SavedView, StatusToken, Subtask, Task, TaskFilterQuery, TimeSession, TimeTrackingSummary, TokenState, UpdateTask, User, }; /// Convenience type alias for repository operation results. pub type Result = std::result::Result; mod contact; mod email; mod event; mod misc; mod project; mod review; mod search; mod stats; mod task; mod user; pub use contact::*; pub use email::*; pub use event::*; pub use misc::*; pub use project::*; pub use review::*; pub use search::*; pub use stats::*; pub use task::*; pub use user::*;