110 lines
2.6 KiB
Go
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
|
|
}
|