hako/internal/archival/store/options.go
2026-01-18 09:51:25 +01:00

110 lines
2.6 KiB
Go

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
}