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 GetMostVisited(ctx context.Context, limit int64) ([]History, error)
24 SearchHistory(ctx context.Context, column1 sql.NullString, column2 sql.NullString, limit int64) ([]History, error)
25 AddOrUpdateHistory(ctx context.Context, url string, title sql.NullString) error
26 UpdateHistoryFavicon(ctx context.Context, faviconUrl sql.NullString, url string) error
27 DeleteHistory(ctx context.Context, id int64) error
28 DeleteAllHistory(ctx context.Context) error
29}
30
31// CertificateQuerier defines the interface for certificate validation-related database operations
32type CertificateQuerier interface {
33 ListCertificateValidations(ctx context.Context) ([]CertificateValidation, error)
34 GetCertificateValidation(ctx context.Context, hostname string, certificateHash string) (CertificateValidation, error)
35 GetCertificateValidationByHostname(ctx context.Context, hostname string) (CertificateValidation, error)
36 StoreCertificateValidation(ctx context.Context, hostname string, certificateHash string, userDecision string, expiresAt sql.NullTime) error
37 DeleteCertificateValidation(ctx context.Context, hostname string, certificateHash string) error
38 DeleteExpiredCertificateValidations(ctx context.Context) error
39}
40
41// FavoritesQuerier defines the interface for favorites-related database operations
42type FavoritesQuerier interface {
43 GetAllFavorites(ctx context.Context) ([]Favorite, error)
44 GetFavoriteByURL(ctx context.Context, url string) (Favorite, error)
45 CreateFavorite(ctx context.Context, url string, title sql.NullString, faviconUrl sql.NullString) error
46 UpdateFavorite(ctx context.Context, title sql.NullString, faviconUrl sql.NullString, url string) error
47 DeleteFavorite(ctx context.Context, url string) error
48 IsFavorite(ctx context.Context, url string) (int64, error)
49 UpdateFavoritePosition(ctx context.Context, position int64, url string) error
50 GetFavoriteCount(ctx context.Context) (int64, error)
51}
52
53// DatabaseQuerier combines all database operation interfaces
54type DatabaseQuerier interface {
55 ZoomQuerier
56 HistoryQuerier
57 CertificateQuerier
58 FavoritesQuerier
59}
60
61// Ensure that *Queries implements DatabaseQuerier interface
62var _ DatabaseQuerier = (*Queries)(nil)