-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquery.sql
More file actions
120 lines (102 loc) · 3.33 KB
/
Copy pathquery.sql
File metadata and controls
120 lines (102 loc) · 3.33 KB
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
-- name: CreateChatgptMessage :one
INSERT INTO chatgpt_messages (
id, message_type, json_body, user_name, mastodon_status_id, timestamp, privacy_level
) VALUES ($1, $2, $3, $4, $5, $6, $7)
RETURNING *;
-- name: FindChatgptMessageByMastodonStatusId :one
SELECT *
FROM chatgpt_messages
WHERE mastodon_status_id = $1;
-- name: CreateChatgptThread :one
INSERT INTO chatgpt_threads (id) VALUES ($1)
RETURNING *;
-- name: GetChatgptMessagesByThreadId :many
SELECT
json_body,
user_name
FROM chatgpt_messages
INNER JOIN chatgpt_threads_rel ON chatgpt_messages.id = chatgpt_threads_rel.chatgpt_message_id
WHERE chatgpt_threads_rel.thread_id = $1
AND message_type != 'pseudo_message'
ORDER BY chatgpt_threads_rel.sequence_num;
-- name: GetRecentChatgptMessages :many
SELECT
json_body,
user_name
FROM chatgpt_messages
WHERE message_type != 'pseudo_message'
AND privacy_level != 'private'
ORDER BY timestamp DESC
LIMIT $1;
-- name: GetFullChatgptMessagesByThreadId :many
SELECT chatgpt_messages.*
FROM chatgpt_messages
INNER JOIN chatgpt_threads_rel ON chatgpt_messages.id = chatgpt_threads_rel.chatgpt_message_id
WHERE chatgpt_threads_rel.thread_id = $1
AND message_type != 'pseudo_message'
ORDER BY chatgpt_threads_rel.sequence_num;
-- name: GetRecentFullChatgptMessages :many
SELECT *
FROM chatgpt_messages
WHERE message_type != 'pseudo_message'
AND privacy_level != 'private'
ORDER BY timestamp DESC
LIMIT $1;
-- name: CreateChatgptThreadRel :exec
INSERT INTO chatgpt_threads_rel (
thread_id, chatgpt_message_id, sequence_num
) VALUES ($1, $2, $3);
-- name: GetChatgptThreadRels :many
SELECT *
FROM chatgpt_threads_rel
WHERE thread_id IN (SELECT DISTINCT thread_id FROM chatgpt_threads_rel WHERE chatgpt_threads_rel.chatgpt_message_id = $1)
ORDER BY thread_id, sequence_num;
-- name: GetMaxSequenceNum :one
SELECT COALESCE(MAX(sequence_num), 0)::INT AS max_sequence_num
FROM chatgpt_threads_rel
WHERE thread_id = $1;
-- name: GetRecentThreadIdsByUserName :many
SELECT DISTINCT thread_id
FROM chatgpt_threads_rel
WHERE chatgpt_message_id IN (
SELECT id
FROM chatgpt_messages
WHERE user_name = $1
AND message_type != 'pseudo_message'
ORDER BY timestamp DESC
LIMIT $2
);
-- name: CreateUser :exec
INSERT INTO users (id, name)
VALUES($1, $2);
-- name: CreateMastodonUserMapping :exec
INSERT INTO mastodon_user_mappings (mastodon_account_id, user_id)
VALUES($1, $2);
-- name: GetUserByMastodonAccountId :one
SELECT users.*
FROM users
INNER JOIN mastodon_user_mappings ON users.id = mastodon_user_mappings.user_id
WHERE mastodon_user_mappings.mastodon_account_id = $1;
-- name: UpdateMastodonStatusId :exec
UPDATE chatgpt_messages SET mastodon_status_id = $1
WHERE id = $2;
-- name: CreateImage :exec
INSERT INTO images (id, url)
VALUES($1, $2);
-- name: CreateChatGptMessageImageRel :exec
INSERT INTO chatgpt_message_image_rel (chatgpt_message_id, image_id, position)
VALUES($1, $2, $3);
-- name: GetImagesByChatGptMessageId :many
SELECT images.*
FROM images
INNER JOIN chatgpt_message_image_rel AS cmir ON images.id = cmir.image_id
WHERE cmir.chatgpt_message_id = $1;
-- name: GetImagesByChatGptMessageIds :many
SELECT
rel.chatgpt_message_id,
rel.image_id,
images.*
FROM chatgpt_message_image_rel AS rel
INNER JOIN images ON rel.image_id = images.id
WHERE rel.chatgpt_message_id = ANY($1 :: UUID[])
ORDER BY rel.chatgpt_message_id, rel.position;