-
Notifications
You must be signed in to change notification settings - Fork 0
/
queries.sql
95 lines (75 loc) · 2.02 KB
/
queries.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
-- name: GetAgent :one
SELECT * FROM agents
WHERE id = $1;
-- name: ListAgents :many
SELECT * FROM agents
ORDER BY name;
-- name: CreateAgent :one
INSERT INTO agents (name, email)
VALUES ($1, $2)
RETURNING *;
-- name: UpdateAgent :one
UPDATE agents
SET name = $2, email = $3
WHERE id = $1
RETURNING *;
-- name: DeleteAgent :one
DELETE FROM agents
WHERE id = $1
RETURNING *;
-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = $1;
-- name: ListAuthors :many
SELECT * FROM authors
ORDER BY name;
-- name: CreateAuthor :one
INSERT INTO authors (name, website, agent_id)
VALUES ($1, $2, $3)
RETURNING *;
-- name: UpdateAuthor :one
UPDATE authors
SET name = $2, website = $3, agent_id = $4
WHERE id = $1
RETURNING *;
-- name: DeleteAuthor :one
DELETE FROM authors
WHERE id = $1
RETURNING *;
-- name: GetBook :one
SELECT * FROM books
WHERE id = $1;
-- name: ListBooks :many
SELECT * FROM books
ORDER BY title;
-- name: CreateBook :one
INSERT INTO books (title, description, cover)
VALUES ($1, $2, $3)
RETURNING *;
-- name: UpdateBook :one
UPDATE books
SET title = $2, description = $3, cover = $4
WHERE id = $1
RETURNING *;
-- name: DeleteBook :one
DELETE FROM books
WHERE id = $1
RETURNING *;
-- name: SetBookAuthor :exec
INSERT INTO book_authors (book_id, author_id)
VALUES ($1, $2);
-- name: UnsetBookAuthors :exec
DELETE FROM book_authors
WHERE book_id = $1;
-- name: ListAuthorsByAgentIDs :many
SELECT authors.* FROM authors, agents
WHERE authors.agent_id = agents.id AND agents.id = ANY($1::bigint[]);
-- name: ListBooksByAuthorIDs :many
SELECT books.*, book_authors.author_id FROM books, book_authors
WHERE book_authors.book_id = books.id AND book_authors.author_id = ANY($1::bigint[]);
-- name: ListAuthorsByBookIDs :many
SELECT authors.*, book_authors.book_id FROM authors, book_authors
WHERE book_authors.author_id = authors.id AND book_authors.book_id = ANY($1::bigint[]);
-- name: ListAgentsByAuthorIDs :many
SELECT agents.*, authors.id AS author_id FROM agents, authors
WHERE agents.id = authors.agent_id AND authors.id = ANY($1::bigint[]);