package store import "fmt" // LinkListOptions contains options for listing links type LinkListOptions struct { UserID string Limit int Offset int CategoryID string SearchQuery string LabelIDs []string // For future label/tag filtering } // Defaults sets sensible defaults for LinkListOptions func (o *LinkListOptions) Defaults() { if o.Limit == 0 { o.Limit = DefaultListLimit } if o.Offset < 0 { o.Offset = 0 } } // IsValid validates LinkListOptions func (o *LinkListOptions) IsValid() error { if o.UserID == "" { return fmt.Errorf("userID is required") } if o.Limit < MinListLimit || o.Limit > MaxListLimit { return fmt.Errorf("limit must be between %d and %d, got %d", MinListLimit, MaxListLimit, o.Limit) } if o.Offset < 0 { return fmt.Errorf("offset must be >= 0, got %d", o.Offset) } return nil } // LinkCountOptions contains options for counting links type LinkCountOptions struct { UserID string CategoryID string SearchQuery string LabelIDs []string // For future label/tag filtering } // Defaults sets sensible defaults for LinkCountOptions func (o *LinkCountOptions) Defaults() { // No defaults needed currently } // IsValid validates LinkCountOptions func (o *LinkCountOptions) IsValid() error { if o.UserID == "" { return fmt.Errorf("userID is required") } return nil } // ArchiveListOptions contains options for listing archives type ArchiveListOptions struct { LinkID string } // Defaults sets sensible defaults for ArchiveListOptions func (o *ArchiveListOptions) Defaults() { // No defaults needed currently } // IsValid validates ArchiveListOptions func (o *ArchiveListOptions) IsValid() error { if o.LinkID == "" { return fmt.Errorf("linkID is required") } return nil } // ArchiveFileListOptions contains options for listing archive files type ArchiveFileListOptions struct { ArchiveID string } // Defaults sets sensible defaults for ArchiveFileListOptions func (o *ArchiveFileListOptions) Defaults() { // No defaults needed currently } // IsValid validates ArchiveFileListOptions func (o *ArchiveFileListOptions) IsValid() error { if o.ArchiveID == "" { return fmt.Errorf("archiveID is required") } return nil } // CategoryListOptions contains options for listing categories type CategoryListOptions struct { // No fields currently, but struct exists for consistency and future extensibility } // Defaults sets sensible defaults for CategoryListOptions func (o *CategoryListOptions) Defaults() { // No defaults needed currently } // IsValid validates CategoryListOptions func (o *CategoryListOptions) IsValid() error { // No validation needed currently return nil }