1package port
2
3import (
4 "context"
5 "time"
6
7 "github.com/bnema/dumber/internal/domain/entity"
8)
9
10// HistorySearchInput holds search parameters (moved from usecase.SearchInput).
11type HistorySearchInput struct {
12 Query string
13 Limit int
14}
15
16// HistorySearchOutput holds search results (moved from usecase.SearchOutput).
17type HistorySearchOutput struct {
18 Matches []entity.HistoryMatch
19}
20
21// HomepageHistory provides history operations needed by the WebUI homepage handlers.
22type HomepageHistory interface {
23 GetRecent(ctx context.Context, limit, offset int) ([]*entity.HistoryEntry, error)
24 Search(ctx context.Context, input HistorySearchInput) (*HistorySearchOutput, error)
25 Delete(ctx context.Context, id int64) error
26 ClearAll(ctx context.Context) error
27 ClearOlderThan(ctx context.Context, before time.Time) error
28 GetAnalytics(ctx context.Context) (*entity.HistoryAnalytics, error)
29 GetDomainStats(ctx context.Context, limit int) ([]*entity.DomainStat, error)
30 DeleteByDomain(ctx context.Context, domain string) error
31}
32
33// HomepageFavorites provides favorites/folders/tags operations
34// needed by the WebUI homepage handlers.
35type HomepageFavorites interface {
36 GetAll(ctx context.Context) ([]*entity.Favorite, error)
37 SetShortcut(ctx context.Context, id entity.FavoriteID, key *int) error
38 GetByShortcut(ctx context.Context, key int) (*entity.Favorite, error)
39 Move(ctx context.Context, id entity.FavoriteID, folderID *entity.FolderID) error
40 GetAllFolders(ctx context.Context) ([]*entity.Folder, error)
41 CreateFolder(ctx context.Context, name string, parentID *entity.FolderID) (*entity.Folder, error)
42 DeleteFolder(ctx context.Context, id entity.FolderID) error
43 UpdateFolder(ctx context.Context, id entity.FolderID, name, icon string) error
44 GetAllTags(ctx context.Context) ([]*entity.Tag, error)
45 AddTag(ctx context.Context, name, color string) (*entity.Tag, error)
46 DeleteTag(ctx context.Context, id entity.TagID) error
47 UpdateTag(ctx context.Context, id entity.TagID, name, color string) error
48 TagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
49 UntagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
50}