1-- name: GetAllFavorites :many
2SELECT id, url, title, favicon_url, shortcut_key, position, created_at, updated_at
3FROM favorites
4ORDER BY position ASC;
5
6-- name: GetFavoriteByID :one
7SELECT id, url, title, favicon_url, shortcut_key, position, created_at, updated_at
8FROM favorites
9WHERE id = ? LIMIT 1;
10
11-- name: GetFavoriteByURL :one
12SELECT id, url, title, favicon_url, shortcut_key, position, created_at, updated_at
13FROM favorites
14WHERE url = ? LIMIT 1;
15
16-- name: GetFavoritesByTag :many
17SELECT f.id, f.url, f.title, f.favicon_url, f.shortcut_key, f.position, f.created_at, f.updated_at
18FROM favorites f
19INNER JOIN favorite_tag_assignments fta ON f.id = fta.favorite_id
20WHERE fta.tag_id = ?
21ORDER BY f.position ASC;
22
23-- name: GetFavoriteByShortcut :one
24SELECT id, url, title, favicon_url, shortcut_key, position, created_at, updated_at
25FROM favorites
26WHERE shortcut_key = ? LIMIT 1;
27
28-- name: CreateFavorite :one
29INSERT INTO favorites (url, title, favicon_url, position, created_at, updated_at)
30VALUES (?, ?, ?, COALESCE((SELECT MAX(position) + 1 FROM favorites), 0), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
31RETURNING id, url, title, favicon_url, shortcut_key, position, created_at, updated_at;
32
33-- name: UpdateFavorite :exec
34UPDATE favorites
35SET title = ?, favicon_url = ?, shortcut_key = ?, updated_at = CURRENT_TIMESTAMP
36WHERE id = ?;
37
38-- name: UpdateFavoritePosition :exec
39UPDATE favorites SET position = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?;
40
41-- name: SetFavoriteShortcut :exec
42UPDATE favorites SET shortcut_key = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?;
43
44-- name: DeleteFavorite :exec
45DELETE FROM favorites WHERE id = ?;