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