1package db
2
3import (
4 "context"
5 "database/sql"
6)
7
8//go:generate mockgen -source=interfaces.go -destination=mocks/mock_db.go
9
10// ZoomQuerier defines the interface for zoom-related database operations
11type ZoomQuerier interface {
12 GetZoomLevel(ctx context.Context, domain string) (float64, error)
13 SetZoomLevel(ctx context.Context, domain string, zoomLevel float64) error
14 DeleteZoomLevel(ctx context.Context, domain string) error
15 ListZoomLevels(ctx context.Context) ([]ZoomLevel, error)
16}
17
18// HistoryQuerier defines the interface for history-related database operations
19type HistoryQuerier interface {
20 GetHistory(ctx context.Context, limit int64) ([]History, error)
21 GetHistoryEntry(ctx context.Context, url string) (History, error)
22 GetHistoryWithOffset(ctx context.Context, limit int64, offset int64) ([]History, error)
23 SearchHistory(ctx context.Context, column1 sql.NullString, column2 sql.NullString, limit int64) ([]History, error)
24 AddOrUpdateHistory(ctx context.Context, url string, title sql.NullString) error
25 UpdateHistoryFavicon(ctx context.Context, faviconUrl sql.NullString, url string) error
26 DeleteHistory(ctx context.Context, id int64) error
27}
28
29// CertificateQuerier defines the interface for certificate validation-related database operations
30type CertificateQuerier interface {
31 ListCertificateValidations(ctx context.Context) ([]CertificateValidation, error)
32 GetCertificateValidation(ctx context.Context, hostname string, certificateHash string) (CertificateValidation, error)
33 GetCertificateValidationByHostname(ctx context.Context, hostname string) (CertificateValidation, error)
34 StoreCertificateValidation(ctx context.Context, hostname string, certificateHash string, userDecision string, expiresAt sql.NullTime) error
35 DeleteCertificateValidation(ctx context.Context, hostname string, certificateHash string) error
36 DeleteExpiredCertificateValidations(ctx context.Context) error
37}
38
39// FavoritesQuerier defines the interface for favorites-related database operations
40type FavoritesQuerier interface {
41 GetAllFavorites(ctx context.Context) ([]Favorite, error)
42 GetFavoriteByURL(ctx context.Context, url string) (Favorite, error)
43 CreateFavorite(ctx context.Context, url string, title sql.NullString, faviconUrl sql.NullString) error
44 UpdateFavorite(ctx context.Context, title sql.NullString, faviconUrl sql.NullString, url string) error
45 DeleteFavorite(ctx context.Context, url string) error
46 IsFavorite(ctx context.Context, url string) (int64, error)
47 UpdateFavoritePosition(ctx context.Context, position int64, url string) error
48 GetFavoriteCount(ctx context.Context) (int64, error)
49}
50
51// DatabaseQuerier combines all database operation interfaces
52type DatabaseQuerier interface {
53 ZoomQuerier
54 HistoryQuerier
55 CertificateQuerier
56 FavoritesQuerier
57}
58
59// Ensure that *Queries implements DatabaseQuerier interface
60var _ DatabaseQuerier = (*Queries)(nil)