v0.23.2 bfd5eb4

history.sql.go RawHistoryFolder

1// Code generated by sqlc. DO NOT EDIT.
2// versions:
3//   sqlc v1.30.0
4// source: history.sql
5
6package sqlc
7
8import (
9	"context"
10	"database/sql"
11)
12
13const DeleteAllHistory = `-- name: DeleteAllHistory :exec
14DELETE FROM history
15`
16
17func (q *Queries) DeleteAllHistory(ctx context.Context) error {
18	_, err := q.db.ExecContext(ctx, DeleteAllHistory)
19	return err
20}
21
22const DeleteHistoryByDomain = `-- name: DeleteHistoryByDomain :exec
23DELETE FROM history WHERE url LIKE '%://' || ? || '/%' OR url LIKE '%://' || ? || '?%' OR url LIKE '%://' || ? || '#%' OR url LIKE '%://' || ?
24`
25
26type DeleteHistoryByDomainParams struct {
27	Column1 sql.NullString `json:"column_1"`
28	Column2 sql.NullString `json:"column_2"`
29	Column3 sql.NullString `json:"column_3"`
30	Column4 sql.NullString `json:"column_4"`
31}
32
33func (q *Queries) DeleteHistoryByDomain(ctx context.Context, arg DeleteHistoryByDomainParams) error {
34	_, err := q.db.ExecContext(ctx, DeleteHistoryByDomain,
35		arg.Column1,
36		arg.Column2,
37		arg.Column3,
38		arg.Column4,
39	)
40	return err
41}
42
43const DeleteHistoryByID = `-- name: DeleteHistoryByID :exec
44DELETE FROM history WHERE id = ?
45`
46
47func (q *Queries) DeleteHistoryByID(ctx context.Context, id int64) error {
48	_, err := q.db.ExecContext(ctx, DeleteHistoryByID, id)
49	return err
50}
51
52const DeleteHistoryOlderThan = `-- name: DeleteHistoryOlderThan :exec
53DELETE FROM history WHERE last_visited < ?
54`
55
56func (q *Queries) DeleteHistoryOlderThan(ctx context.Context, lastVisited sql.NullTime) error {
57	_, err := q.db.ExecContext(ctx, DeleteHistoryOlderThan, lastVisited)
58	return err
59}
60
61const GetAllMostVisited = `-- name: GetAllMostVisited :many
62SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history
63ORDER BY visit_count DESC, last_visited DESC
64`
65
66func (q *Queries) GetAllMostVisited(ctx context.Context) ([]History, error) {
67	rows, err := q.db.QueryContext(ctx, GetAllMostVisited)
68	if err != nil {
69		return nil, err
70	}
71	defer rows.Close()
72	items := []History{}
73	for rows.Next() {
74		var i History
75		if err := rows.Scan(
76			&i.ID,
77			&i.Url,
78			&i.Title,
79			&i.FaviconUrl,
80			&i.VisitCount,
81			&i.LastVisited,
82			&i.CreatedAt,
83		); err != nil {
84			return nil, err
85		}
86		items = append(items, i)
87	}
88	if err := rows.Close(); err != nil {
89		return nil, err
90	}
91	if err := rows.Err(); err != nil {
92		return nil, err
93	}
94	return items, nil
95}
96
97const GetAllRecentHistory = `-- name: GetAllRecentHistory :many
98SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history
99ORDER BY last_visited DESC
100`
101
102func (q *Queries) GetAllRecentHistory(ctx context.Context) ([]History, error) {
103	rows, err := q.db.QueryContext(ctx, GetAllRecentHistory)
104	if err != nil {
105		return nil, err
106	}
107	defer rows.Close()
108	items := []History{}
109	for rows.Next() {
110		var i History
111		if err := rows.Scan(
112			&i.ID,
113			&i.Url,
114			&i.Title,
115			&i.FaviconUrl,
116			&i.VisitCount,
117			&i.LastVisited,
118			&i.CreatedAt,
119		); err != nil {
120			return nil, err
121		}
122		items = append(items, i)
123	}
124	if err := rows.Close(); err != nil {
125		return nil, err
126	}
127	if err := rows.Err(); err != nil {
128		return nil, err
129	}
130	return items, nil
131}
132
133const GetDailyVisitCount = `-- name: GetDailyVisitCount :many
134SELECT 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
135`
136
137type GetDailyVisitCountRow struct {
138	Day     interface{}     `json:"day"`
139	Entries int64           `json:"entries"`
140	Visits  sql.NullFloat64 `json:"visits"`
141}
142
143func (q *Queries) GetDailyVisitCount(ctx context.Context, date interface{}) ([]GetDailyVisitCountRow, error) {
144	rows, err := q.db.QueryContext(ctx, GetDailyVisitCount, date)
145	if err != nil {
146		return nil, err
147	}
148	defer rows.Close()
149	items := []GetDailyVisitCountRow{}
150	for rows.Next() {
151		var i GetDailyVisitCountRow
152		if err := rows.Scan(&i.Day, &i.Entries, &i.Visits); err != nil {
153			return nil, err
154		}
155		items = append(items, i)
156	}
157	if err := rows.Close(); err != nil {
158		return nil, err
159	}
160	if err := rows.Err(); err != nil {
161		return nil, err
162	}
163	return items, nil
164}
165
166const GetDomainStats = `-- name: GetDomainStats :many
167SELECT SUBSTR(SUBSTR(url, INSTR(url, '://') + 3), 1, CASE WHEN INSTR(SUBSTR(url, INSTR(url, '://') + 3), '/') > 0 THEN INSTR(SUBSTR(url, INSTR(url, '://') + 3), '/') - 1 ELSE LENGTH(SUBSTR(url, INSTR(url, '://') + 3)) END) as domain, COUNT(*) as page_count, SUM(visit_count) as total_visits, MAX(last_visited) as last_visit FROM history GROUP BY domain ORDER BY total_visits DESC LIMIT ?
168`
169
170type GetDomainStatsRow struct {
171	Domain      string          `json:"domain"`
172	PageCount   int64           `json:"page_count"`
173	TotalVisits sql.NullFloat64 `json:"total_visits"`
174	LastVisit   interface{}     `json:"last_visit"`
175}
176
177func (q *Queries) GetDomainStats(ctx context.Context, limit int64) ([]GetDomainStatsRow, error) {
178	rows, err := q.db.QueryContext(ctx, GetDomainStats, limit)
179	if err != nil {
180		return nil, err
181	}
182	defer rows.Close()
183	items := []GetDomainStatsRow{}
184	for rows.Next() {
185		var i GetDomainStatsRow
186		if err := rows.Scan(
187			&i.Domain,
188			&i.PageCount,
189			&i.TotalVisits,
190			&i.LastVisit,
191		); err != nil {
192			return nil, err
193		}
194		items = append(items, i)
195	}
196	if err := rows.Close(); err != nil {
197		return nil, err
198	}
199	if err := rows.Err(); err != nil {
200		return nil, err
201	}
202	return items, nil
203}
204
205const GetHistoryByURL = `-- name: GetHistoryByURL :one
206SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history WHERE url = ? LIMIT 1
207`
208
209func (q *Queries) GetHistoryByURL(ctx context.Context, url string) (History, error) {
210	row := q.db.QueryRowContext(ctx, GetHistoryByURL, url)
211	var i History
212	err := row.Scan(
213		&i.ID,
214		&i.Url,
215		&i.Title,
216		&i.FaviconUrl,
217		&i.VisitCount,
218		&i.LastVisited,
219		&i.CreatedAt,
220	)
221	return i, err
222}
223
224const GetHistoryStats = `-- name: GetHistoryStats :one
225SELECT COUNT(*) as total_entries, COALESCE(SUM(visit_count), 0) as total_visits, COUNT(DISTINCT date(last_visited)) as unique_days FROM history
226`
227
228type GetHistoryStatsRow struct {
229	TotalEntries int64       `json:"total_entries"`
230	TotalVisits  interface{} `json:"total_visits"`
231	UniqueDays   int64       `json:"unique_days"`
232}
233
234func (q *Queries) GetHistoryStats(ctx context.Context) (GetHistoryStatsRow, error) {
235	row := q.db.QueryRowContext(ctx, GetHistoryStats)
236	var i GetHistoryStatsRow
237	err := row.Scan(&i.TotalEntries, &i.TotalVisits, &i.UniqueDays)
238	return i, err
239}
240
241const GetHourlyDistribution = `-- name: GetHourlyDistribution :many
242SELECT CAST(strftime('%H', last_visited) AS INTEGER) as hour, COUNT(*) as visit_count FROM history GROUP BY hour ORDER BY hour
243`
244
245type GetHourlyDistributionRow struct {
246	Hour       int64 `json:"hour"`
247	VisitCount int64 `json:"visit_count"`
248}
249
250func (q *Queries) GetHourlyDistribution(ctx context.Context) ([]GetHourlyDistributionRow, error) {
251	rows, err := q.db.QueryContext(ctx, GetHourlyDistribution)
252	if err != nil {
253		return nil, err
254	}
255	defer rows.Close()
256	items := []GetHourlyDistributionRow{}
257	for rows.Next() {
258		var i GetHourlyDistributionRow
259		if err := rows.Scan(&i.Hour, &i.VisitCount); err != nil {
260			return nil, err
261		}
262		items = append(items, i)
263	}
264	if err := rows.Close(); err != nil {
265		return nil, err
266	}
267	if err := rows.Err(); err != nil {
268		return nil, err
269	}
270	return items, nil
271}
272
273const GetMostVisited = `-- name: GetMostVisited :many
274SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history
275WHERE last_visited >= datetime('now', ?)
276ORDER BY visit_count DESC, last_visited DESC
277`
278
279func (q *Queries) GetMostVisited(ctx context.Context, datetime interface{}) ([]History, error) {
280	rows, err := q.db.QueryContext(ctx, GetMostVisited, datetime)
281	if err != nil {
282		return nil, err
283	}
284	defer rows.Close()
285	items := []History{}
286	for rows.Next() {
287		var i History
288		if err := rows.Scan(
289			&i.ID,
290			&i.Url,
291			&i.Title,
292			&i.FaviconUrl,
293			&i.VisitCount,
294			&i.LastVisited,
295			&i.CreatedAt,
296		); err != nil {
297			return nil, err
298		}
299		items = append(items, i)
300	}
301	if err := rows.Close(); err != nil {
302		return nil, err
303	}
304	if err := rows.Err(); err != nil {
305		return nil, err
306	}
307	return items, nil
308}
309
310const GetRecentHistory = `-- name: GetRecentHistory :many
311SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history ORDER BY last_visited DESC LIMIT ? OFFSET ?
312`
313
314type GetRecentHistoryParams struct {
315	Limit  int64 `json:"limit"`
316	Offset int64 `json:"offset"`
317}
318
319func (q *Queries) GetRecentHistory(ctx context.Context, arg GetRecentHistoryParams) ([]History, error) {
320	rows, err := q.db.QueryContext(ctx, GetRecentHistory, arg.Limit, arg.Offset)
321	if err != nil {
322		return nil, err
323	}
324	defer rows.Close()
325	items := []History{}
326	for rows.Next() {
327		var i History
328		if err := rows.Scan(
329			&i.ID,
330			&i.Url,
331			&i.Title,
332			&i.FaviconUrl,
333			&i.VisitCount,
334			&i.LastVisited,
335			&i.CreatedAt,
336		); err != nil {
337			return nil, err
338		}
339		items = append(items, i)
340	}
341	if err := rows.Close(); err != nil {
342		return nil, err
343	}
344	if err := rows.Err(); err != nil {
345		return nil, err
346	}
347	return items, nil
348}
349
350const GetRecentHistorySince = `-- name: GetRecentHistorySince :many
351SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history
352WHERE last_visited >= datetime('now', ?)
353ORDER BY last_visited DESC
354`
355
356func (q *Queries) GetRecentHistorySince(ctx context.Context, datetime interface{}) ([]History, error) {
357	rows, err := q.db.QueryContext(ctx, GetRecentHistorySince, datetime)
358	if err != nil {
359		return nil, err
360	}
361	defer rows.Close()
362	items := []History{}
363	for rows.Next() {
364		var i History
365		if err := rows.Scan(
366			&i.ID,
367			&i.Url,
368			&i.Title,
369			&i.FaviconUrl,
370			&i.VisitCount,
371			&i.LastVisited,
372			&i.CreatedAt,
373		); err != nil {
374			return nil, err
375		}
376		items = append(items, i)
377	}
378	if err := rows.Close(); err != nil {
379		return nil, err
380	}
381	if err := rows.Err(); err != nil {
382		return nil, err
383	}
384	return items, nil
385}
386
387const IncrementVisitCount = `-- name: IncrementVisitCount :exec
388UPDATE history
389SET visit_count = visit_count + 1, last_visited = CURRENT_TIMESTAMP
390WHERE url = ?
391`
392
393func (q *Queries) IncrementVisitCount(ctx context.Context, url string) error {
394	_, err := q.db.ExecContext(ctx, IncrementVisitCount, url)
395	return err
396}
397
398const SearchHistory = `-- name: SearchHistory :many
399SELECT id, url, title, favicon_url, visit_count, last_visited, created_at FROM history
400WHERE url LIKE '%' || ? || '%' OR title LIKE '%' || ? || '%'
401ORDER BY visit_count DESC, last_visited DESC
402LIMIT ?
403`
404
405type SearchHistoryParams struct {
406	Column1 sql.NullString `json:"column_1"`
407	Column2 sql.NullString `json:"column_2"`
408	Limit   int64          `json:"limit"`
409}
410
411func (q *Queries) SearchHistory(ctx context.Context, arg SearchHistoryParams) ([]History, error) {
412	rows, err := q.db.QueryContext(ctx, SearchHistory, arg.Column1, arg.Column2, arg.Limit)
413	if err != nil {
414		return nil, err
415	}
416	defer rows.Close()
417	items := []History{}
418	for rows.Next() {
419		var i History
420		if err := rows.Scan(
421			&i.ID,
422			&i.Url,
423			&i.Title,
424			&i.FaviconUrl,
425			&i.VisitCount,
426			&i.LastVisited,
427			&i.CreatedAt,
428		); err != nil {
429			return nil, err
430		}
431		items = append(items, i)
432	}
433	if err := rows.Close(); err != nil {
434		return nil, err
435	}
436	if err := rows.Err(); err != nil {
437		return nil, err
438	}
439	return items, nil
440}
441
442const SearchHistoryFTS = `-- name: SearchHistoryFTS :many
443SELECT h.id, h.url, h.title, h.favicon_url, h.visit_count, h.last_visited, h.created_at
444FROM history_fts fts
445JOIN history h ON fts.rowid = h.id
446WHERE fts.url MATCH ?
447ORDER BY bm25(history_fts)
448LIMIT ?
449`
450
451type SearchHistoryFTSParams struct {
452	Url   string `json:"url"`
453	Limit int64  `json:"limit"`
454}
455
456func (q *Queries) SearchHistoryFTS(ctx context.Context, arg SearchHistoryFTSParams) ([]History, error) {
457	rows, err := q.db.QueryContext(ctx, SearchHistoryFTS, arg.Url, arg.Limit)
458	if err != nil {
459		return nil, err
460	}
461	defer rows.Close()
462	items := []History{}
463	for rows.Next() {
464		var i History
465		if err := rows.Scan(
466			&i.ID,
467			&i.Url,
468			&i.Title,
469			&i.FaviconUrl,
470			&i.VisitCount,
471			&i.LastVisited,
472			&i.CreatedAt,
473		); err != nil {
474			return nil, err
475		}
476		items = append(items, i)
477	}
478	if err := rows.Close(); err != nil {
479		return nil, err
480	}
481	if err := rows.Err(); err != nil {
482		return nil, err
483	}
484	return items, nil
485}
486
487const UpsertHistory = `-- name: UpsertHistory :exec
488INSERT INTO history (url, title, favicon_url)
489VALUES (?, ?, ?)
490ON CONFLICT(url)
491DO UPDATE SET
492    visit_count = visit_count + 1,
493    last_visited = CURRENT_TIMESTAMP,
494    title = COALESCE(EXCLUDED.title, history.title),
495    favicon_url = COALESCE(EXCLUDED.favicon_url, history.favicon_url)
496`
497
498type UpsertHistoryParams struct {
499	Url        string         `json:"url"`
500	Title      sql.NullString `json:"title"`
501	FaviconUrl sql.NullString `json:"favicon_url"`
502}
503
504func (q *Queries) UpsertHistory(ctx context.Context, arg UpsertHistoryParams) error {
505	_, err := q.db.ExecContext(ctx, UpsertHistory, arg.Url, arg.Title, arg.FaviconUrl)
506	return err
507}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close