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 favorite and tag operations needed by the WebUI homepage handlers.
28type HomepageFavorites interface {
29 GetAll(ctx context.Context) ([]*entity.Favorite, error)
30 AddFavorite(ctx context.Context, input dto.FavoriteCreateInput) (*entity.Favorite, error)
31 UpdateFavorite(ctx context.Context, input dto.FavoriteUpdateInput) (*entity.Favorite, error)
32 DeleteFavorite(ctx context.Context, id entity.FavoriteID) error
33 SetShortcut(ctx context.Context, id entity.FavoriteID, key *int) error
34 GetByShortcut(ctx context.Context, key int) (*entity.Favorite, error)
35 GetAllTags(ctx context.Context) ([]*entity.Tag, error)
36 AddTag(ctx context.Context, name, color string) (*entity.Tag, error)
37 DeleteTag(ctx context.Context, id entity.TagID) error
38 UpdateTag(ctx context.Context, id entity.TagID, name, color string) error
39 TagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
40 UntagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
41}