// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 // source: history.sql package sqlc import ( "context" "database/sql" ) const CapVisitCount = `-- name: CapVisitCount :exec UPDATE history SET visit_count = ? WHERE url = ? AND visit_count > ? ` type CapVisitCountParams struct { VisitCount sql.NullInt64 `json:"visit_count"` Url string `json:"url"` VisitCount_2 sql.NullInt64 `json:"visit_count_2"` } func (q *Queries) CapVisitCount(ctx context.Context, arg CapVisitCountParams) error { _, err := q.db.ExecContext(ctx, CapVisitCount, arg.VisitCount, arg.Url, arg.VisitCount_2) return err } const DeleteAllHistory = `-- name: DeleteAllHistory :exec DELETE FROM history ` func (q *Queries) DeleteAllHistory(ctx context.Context) error { _, err := q.db.ExecContext(ctx, DeleteAllHistory) return err } const DeleteHistoryByDomain = `-- name: DeleteHistoryByDomain :exec DELETE FROM history WHERE domain = ?1 ` func (q *Queries) DeleteHistoryByDomain(ctx context.Context, domain sql.NullString) error { _, err := q.db.ExecContext(ctx, DeleteHistoryByDomain, domain) return err } const DeleteHistoryByID = `-- name: DeleteHistoryByID :exec DELETE FROM history WHERE id = ? ` func (q *Queries) DeleteHistoryByID(ctx context.Context, id int64) error { _, err := q.db.ExecContext(ctx, DeleteHistoryByID, id) return err } const DeleteHistoryOlderThan = `-- name: DeleteHistoryOlderThan :exec DELETE FROM history WHERE last_visited < ? ` func (q *Queries) DeleteHistoryOlderThan(ctx context.Context, lastVisited sql.NullTime) error { _, err := q.db.ExecContext(ctx, DeleteHistoryOlderThan, lastVisited) return err } const DeleteHistorySince = `-- name: DeleteHistorySince :exec DELETE FROM history WHERE last_visited >= ? ` func (q *Queries) DeleteHistorySince(ctx context.Context, lastVisited sql.NullTime) error { _, err := q.db.ExecContext(ctx, DeleteHistorySince, lastVisited) return err } const GetAllMostVisited = `-- name: GetAllMostVisited :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history ORDER BY visit_count DESC, last_visited DESC ` func (q *Queries) GetAllMostVisited(ctx context.Context) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetAllMostVisited) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetAllRecentHistory = `-- name: GetAllRecentHistory :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history ORDER BY last_visited DESC, id DESC ` func (q *Queries) GetAllRecentHistory(ctx context.Context) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetAllRecentHistory) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetAllRecentHistoryByDomain = `-- name: GetAllRecentHistoryByDomain :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE domain = ?1 ORDER BY last_visited DESC, id DESC ` func (q *Queries) GetAllRecentHistoryByDomain(ctx context.Context, domain sql.NullString) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetAllRecentHistoryByDomain, domain) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetDailyVisitCount = `-- name: GetDailyVisitCount :many SELECT date(last_visited) as day, COUNT(*) as entries, SUM(visit_count) as visits FROM history WHERE last_visited >= date('now', ?) GROUP BY day ORDER BY day ASC ` type GetDailyVisitCountRow struct { Day interface{} `json:"day"` Entries int64 `json:"entries"` Visits sql.NullFloat64 `json:"visits"` } func (q *Queries) GetDailyVisitCount(ctx context.Context, date interface{}) ([]GetDailyVisitCountRow, error) { rows, err := q.db.QueryContext(ctx, GetDailyVisitCount, date) if err != nil { return nil, err } defer rows.Close() items := []GetDailyVisitCountRow{} for rows.Next() { var i GetDailyVisitCountRow if err := rows.Scan(&i.Day, &i.Entries, &i.Visits); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetDomainStats = `-- name: GetDomainStats :many SELECT COALESCE(domain, '') as domain, COUNT(*) as page_count, SUM(visit_count) as total_visits, MAX(last_visited) as last_visit FROM history WHERE domain IS NOT NULL AND domain != '' GROUP BY domain ORDER BY total_visits DESC LIMIT ? ` type GetDomainStatsRow struct { Domain string `json:"domain"` PageCount int64 `json:"page_count"` TotalVisits sql.NullFloat64 `json:"total_visits"` LastVisit interface{} `json:"last_visit"` } func (q *Queries) GetDomainStats(ctx context.Context, limit int64) ([]GetDomainStatsRow, error) { rows, err := q.db.QueryContext(ctx, GetDomainStats, limit) if err != nil { return nil, err } defer rows.Close() items := []GetDomainStatsRow{} for rows.Next() { var i GetDomainStatsRow if err := rows.Scan( &i.Domain, &i.PageCount, &i.TotalVisits, &i.LastVisit, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetHistoryByURL = `-- name: GetHistoryByURL :one SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE url = ? LIMIT 1 ` func (q *Queries) GetHistoryByURL(ctx context.Context, url string) (History, error) { row := q.db.QueryRowContext(ctx, GetHistoryByURL, url) var i History err := row.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ) return i, err } const GetHistoryStats = `-- name: GetHistoryStats :one SELECT COUNT(*) as total_entries, COALESCE(SUM(visit_count), 0) as total_visits, COUNT(DISTINCT date(last_visited)) as unique_days FROM history ` type GetHistoryStatsRow struct { TotalEntries int64 `json:"total_entries"` TotalVisits interface{} `json:"total_visits"` UniqueDays int64 `json:"unique_days"` } func (q *Queries) GetHistoryStats(ctx context.Context) (GetHistoryStatsRow, error) { row := q.db.QueryRowContext(ctx, GetHistoryStats) var i GetHistoryStatsRow err := row.Scan(&i.TotalEntries, &i.TotalVisits, &i.UniqueDays) return i, err } const GetHourlyDistribution = `-- name: GetHourlyDistribution :many SELECT CAST(strftime('%H', last_visited) AS INTEGER) as hour, COUNT(*) as visit_count FROM history GROUP BY hour ORDER BY hour ` type GetHourlyDistributionRow struct { Hour int64 `json:"hour"` VisitCount int64 `json:"visit_count"` } func (q *Queries) GetHourlyDistribution(ctx context.Context) ([]GetHourlyDistributionRow, error) { rows, err := q.db.QueryContext(ctx, GetHourlyDistribution) if err != nil { return nil, err } defer rows.Close() items := []GetHourlyDistributionRow{} for rows.Next() { var i GetHourlyDistributionRow if err := rows.Scan(&i.Hour, &i.VisitCount); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetMostVisited = `-- name: GetMostVisited :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE last_visited >= datetime('now', ?) ORDER BY visit_count DESC, last_visited DESC ` func (q *Queries) GetMostVisited(ctx context.Context, datetime interface{}) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetMostVisited, datetime) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetRecentHistory = `-- name: GetRecentHistory :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history ORDER BY last_visited DESC, id DESC LIMIT ? OFFSET ? ` type GetRecentHistoryParams struct { Limit int64 `json:"limit"` Offset int64 `json:"offset"` } func (q *Queries) GetRecentHistory(ctx context.Context, arg GetRecentHistoryParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetRecentHistory, arg.Limit, arg.Offset) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetRecentHistoryByDomain = `-- name: GetRecentHistoryByDomain :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE domain = ?1 ORDER BY last_visited DESC, id DESC LIMIT ?3 OFFSET ?2 ` type GetRecentHistoryByDomainParams struct { Domain sql.NullString `json:"domain"` Offset int64 `json:"offset"` Limit int64 `json:"limit"` } func (q *Queries) GetRecentHistoryByDomain(ctx context.Context, arg GetRecentHistoryByDomainParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetRecentHistoryByDomain, arg.Domain, arg.Offset, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetRecentHistorySince = `-- name: GetRecentHistorySince :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE last_visited >= datetime('now', ?) ORDER BY last_visited DESC ` func (q *Queries) GetRecentHistorySince(ctx context.Context, datetime interface{}) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetRecentHistorySince, datetime) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetRecentHistoryWindow = `-- name: GetRecentHistoryWindow :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE last_visited < ?1 OR (last_visited = ?1 AND id < ?2) ORDER BY last_visited DESC, id DESC LIMIT ?3 ` type GetRecentHistoryWindowParams struct { Before sql.NullTime `json:"before"` BeforeID int64 `json:"before_id"` Limit int64 `json:"limit"` } func (q *Queries) GetRecentHistoryWindow(ctx context.Context, arg GetRecentHistoryWindowParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetRecentHistoryWindow, arg.Before, arg.BeforeID, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetRecentHistoryWindowByDomain = `-- name: GetRecentHistoryWindowByDomain :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE domain = ?1 AND (last_visited < ?2 OR (last_visited = ?2 AND id < ?3)) ORDER BY last_visited DESC, id DESC LIMIT ?4 ` type GetRecentHistoryWindowByDomainParams struct { Domain sql.NullString `json:"domain"` Before sql.NullTime `json:"before"` BeforeID int64 `json:"before_id"` Limit int64 `json:"limit"` } func (q *Queries) GetRecentHistoryWindowByDomain(ctx context.Context, arg GetRecentHistoryWindowByDomainParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, GetRecentHistoryWindowByDomain, arg.Domain, arg.Before, arg.BeforeID, arg.Limit, ) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const IncrementVisitCount = `-- name: IncrementVisitCount :exec UPDATE history SET visit_count = visit_count + 1, last_visited = CURRENT_TIMESTAMP WHERE url = ? ` func (q *Queries) IncrementVisitCount(ctx context.Context, url string) error { _, err := q.db.ExecContext(ctx, IncrementVisitCount, url) return err } const IncrementVisitCountByDelta = `-- name: IncrementVisitCountByDelta :exec UPDATE history SET visit_count = visit_count + ?, last_visited = CURRENT_TIMESTAMP WHERE url = ? ` type IncrementVisitCountByDeltaParams struct { VisitCount sql.NullInt64 `json:"visit_count"` Url string `json:"url"` } func (q *Queries) IncrementVisitCountByDelta(ctx context.Context, arg IncrementVisitCountByDeltaParams) error { _, err := q.db.ExecContext(ctx, IncrementVisitCountByDelta, arg.VisitCount, arg.Url) return err } const SearchHistory = `-- name: SearchHistory :many SELECT id, url, title, favicon_url, visit_count, last_visited, created_at, domain FROM history WHERE url LIKE '%' || ? || '%' OR title LIKE '%' || ? || '%' ORDER BY visit_count DESC, last_visited DESC LIMIT ? ` type SearchHistoryParams struct { Column1 sql.NullString `json:"column_1"` Column2 sql.NullString `json:"column_2"` Limit int64 `json:"limit"` } func (q *Queries) SearchHistory(ctx context.Context, arg SearchHistoryParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, SearchHistory, arg.Column1, arg.Column2, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const SearchHistoryFTSTitle = `-- name: SearchHistoryFTSTitle :many SELECT h.id, h.url, h.title, h.favicon_url, h.visit_count, h.last_visited, h.created_at, h.domain FROM history_fts fts JOIN history h ON fts.rowid = h.id WHERE fts.title MATCH ?1 ORDER BY h.visit_count DESC, h.last_visited DESC LIMIT ?2 ` type SearchHistoryFTSTitleParams struct { Query string `json:"query"` Limit int64 `json:"limit"` } func (q *Queries) SearchHistoryFTSTitle(ctx context.Context, arg SearchHistoryFTSTitleParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, SearchHistoryFTSTitle, arg.Query, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const SearchHistoryFTSUrl = `-- name: SearchHistoryFTSUrl :many SELECT h.id, h.url, h.title, h.favicon_url, h.visit_count, h.last_visited, h.created_at, h.domain FROM history_fts fts JOIN history h ON fts.rowid = h.id WHERE fts.url MATCH ?1 ORDER BY h.visit_count DESC, h.last_visited DESC LIMIT ?2 ` type SearchHistoryFTSUrlParams struct { Query string `json:"query"` Limit int64 `json:"limit"` } func (q *Queries) SearchHistoryFTSUrl(ctx context.Context, arg SearchHistoryFTSUrlParams) ([]History, error) { rows, err := q.db.QueryContext(ctx, SearchHistoryFTSUrl, arg.Query, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []History{} for rows.Next() { var i History if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.Domain, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const SearchHistoryFTSUrlWithDomainBoost = `-- name: SearchHistoryFTSUrlWithDomainBoost :many SELECT h.id, h.url, h.title, h.favicon_url, h.visit_count, h.last_visited, h.created_at, CASE WHEN h.url LIKE '%://' || ?1 || '.%' THEN 2 WHEN h.url LIKE '%://%.' || ?1 || '.%' THEN 2 WHEN h.url LIKE '%://' || ?1 || '/%' THEN 2 WHEN h.url LIKE '%://%.' || ?1 || '/%' THEN 1 ELSE 0 END as domain_boost FROM history_fts fts JOIN history h ON fts.rowid = h.id WHERE fts.url MATCH ?2 ORDER BY domain_boost DESC, h.visit_count DESC, h.last_visited DESC LIMIT ?3 ` type SearchHistoryFTSUrlWithDomainBoostParams struct { Term sql.NullString `json:"term"` Query string `json:"query"` Limit int64 `json:"limit"` } type SearchHistoryFTSUrlWithDomainBoostRow struct { ID int64 `json:"id"` Url string `json:"url"` Title sql.NullString `json:"title"` FaviconUrl sql.NullString `json:"favicon_url"` VisitCount sql.NullInt64 `json:"visit_count"` LastVisited sql.NullTime `json:"last_visited"` CreatedAt sql.NullTime `json:"created_at"` DomainBoost int64 `json:"domain_boost"` } func (q *Queries) SearchHistoryFTSUrlWithDomainBoost(ctx context.Context, arg SearchHistoryFTSUrlWithDomainBoostParams) ([]SearchHistoryFTSUrlWithDomainBoostRow, error) { rows, err := q.db.QueryContext(ctx, SearchHistoryFTSUrlWithDomainBoost, arg.Term, arg.Query, arg.Limit) if err != nil { return nil, err } defer rows.Close() items := []SearchHistoryFTSUrlWithDomainBoostRow{} for rows.Next() { var i SearchHistoryFTSUrlWithDomainBoostRow if err := rows.Scan( &i.ID, &i.Url, &i.Title, &i.FaviconUrl, &i.VisitCount, &i.LastVisited, &i.CreatedAt, &i.DomainBoost, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const UpsertHistory = `-- name: UpsertHistory :exec INSERT INTO history (url, title, favicon_url, domain) VALUES (?, ?, ?, ?) ON CONFLICT(url) DO UPDATE SET visit_count = visit_count + 1, last_visited = CURRENT_TIMESTAMP, title = COALESCE(EXCLUDED.title, history.title), favicon_url = COALESCE(EXCLUDED.favicon_url, history.favicon_url), domain = COALESCE(EXCLUDED.domain, history.domain) ` type UpsertHistoryParams struct { Url string `json:"url"` Title sql.NullString `json:"title"` FaviconUrl sql.NullString `json:"favicon_url"` Domain sql.NullString `json:"domain"` } func (q *Queries) UpsertHistory(ctx context.Context, arg UpsertHistoryParams) error { _, err := q.db.ExecContext(ctx, UpsertHistory, arg.Url, arg.Title, arg.FaviconUrl, arg.Domain, ) return err }