feat: add database models and queries for annotations
- Add MediaNotes and MediaHighlights model structs with pgx v5 types - Add EbookNotes and EbookHighlights for backward compatibility - Add complete CRUD SQL queries for notes and highlights - Add database connection pool function using pgx v5 - Generate sqlc code for new annotation functionality
This commit is contained in:
@@ -279,4 +279,102 @@ DELETE FROM media_ratings WHERE media_item_id = $1 AND user_id = $2;
|
||||
-- Legacy folder management is now handled through libraries
|
||||
|
||||
-- name: GetEbookByFilePath :one
|
||||
SELECT * FROM ebooks WHERE file_path = $1;
|
||||
SELECT * FROM ebooks WHERE file_path = $1;
|
||||
|
||||
-- Media Notes queries
|
||||
-- name: CreateMediaNote :one
|
||||
INSERT INTO media_notes (media_item_id, user_id, content, position)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetMediaNote :one
|
||||
SELECT * FROM media_notes WHERE id = $1;
|
||||
|
||||
-- name: GetMediaNotes :many
|
||||
SELECT * FROM media_notes WHERE media_item_id = $1 AND user_id = $2 ORDER BY created_at DESC;
|
||||
|
||||
-- name: UpdateMediaNote :one
|
||||
UPDATE media_notes SET
|
||||
content = $2,
|
||||
position = $3,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteMediaNote :exec
|
||||
DELETE FROM media_notes WHERE id = $1;
|
||||
|
||||
-- Media Highlights queries
|
||||
-- name: CreateMediaHighlight :one
|
||||
INSERT INTO media_highlights (media_item_id, user_id, selection_text, start_position, end_position, color, note_id)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetMediaHighlight :one
|
||||
SELECT * FROM media_highlights WHERE id = $1;
|
||||
|
||||
-- name: GetMediaHighlights :many
|
||||
SELECT * FROM media_highlights WHERE media_item_id = $1 AND user_id = $2 ORDER BY created_at DESC;
|
||||
|
||||
-- name: UpdateMediaHighlight :one
|
||||
UPDATE media_highlights SET
|
||||
selection_text = $2,
|
||||
start_position = $3,
|
||||
end_position = $4,
|
||||
color = $5,
|
||||
note_id = $6,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteMediaHighlight :exec
|
||||
DELETE FROM media_highlights WHERE id = $1;
|
||||
|
||||
-- Backward compatibility - Ebook Notes queries (using views)
|
||||
-- name: CreateEbookNote :one
|
||||
INSERT INTO media_notes (media_item_id, user_id, content, position)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetEbookNote :one
|
||||
SELECT * FROM ebook_notes WHERE id = $1;
|
||||
|
||||
-- name: GetEbookNotes :many
|
||||
SELECT * FROM ebook_notes WHERE ebook_id = $1 AND user_id = $2 ORDER BY created_at DESC;
|
||||
|
||||
-- name: UpdateEbookNote :one
|
||||
UPDATE media_notes SET
|
||||
content = $2,
|
||||
position = $3,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteEbookNote :exec
|
||||
DELETE FROM media_notes WHERE id = $1;
|
||||
|
||||
-- Backward compatibility - Ebook Highlights queries (using views)
|
||||
-- name: CreateEbookHighlight :one
|
||||
INSERT INTO media_highlights (media_item_id, user_id, selection_text, start_position, end_position, color, note_id)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetEbookHighlight :one
|
||||
SELECT * FROM ebook_highlights WHERE id = $1;
|
||||
|
||||
-- name: GetEbookHighlights :many
|
||||
SELECT * FROM ebook_highlights WHERE ebook_id = $1 AND user_id = $2 ORDER BY created_at DESC;
|
||||
|
||||
-- name: UpdateEbookHighlight :one
|
||||
UPDATE media_highlights SET
|
||||
selection_text = $2,
|
||||
start_position = $3,
|
||||
end_position = $4,
|
||||
color = $5,
|
||||
note_id = $6,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteEbookHighlight :exec
|
||||
DELETE FROM media_highlights WHERE id = $1;
|
||||
Reference in New Issue
Block a user