44 lines
1.2 KiB
SQL
44 lines
1.2 KiB
SQL
-- name: CreateChatRoom :one
|
|
INSERT INTO chat_rooms (name, created_at, updated_at)
|
|
VALUES (?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
RETURNING id, name, created_at, updated_at, last_message_sent_at;
|
|
|
|
-- name: InsertMessage :exec
|
|
INSERT INTO messages (chat_room_id, user_id, message, created_at, updated_at)
|
|
VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
RETURNING id, chat_room_id, user_id, message, created_at, updated_at;
|
|
|
|
-- name: UpdateChatRoomLastMessageSentAt :exec
|
|
UPDATE chat_rooms
|
|
SET last_message_sent_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: GetChatRoom :one
|
|
SELECT
|
|
id,
|
|
name,
|
|
last_message_sent_at,
|
|
created_at,
|
|
updated_at
|
|
FROM chat_rooms
|
|
WHERE chat_rooms.id = ?;
|
|
|
|
-- name: CreateUser :one
|
|
INSERT INTO users (name, created_at, updated_at)
|
|
VALUES (?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
RETURNING id, name, created_at, updated_at;
|
|
|
|
-- name: GetLastMessages :many
|
|
SELECT
|
|
messages.id,
|
|
messages.chat_room_id,
|
|
messages.user_id,
|
|
users.name AS user_name,
|
|
messages.message,
|
|
messages.created_at,
|
|
messages.updated_at
|
|
FROM messages
|
|
JOIN users ON messages.user_id = users.id
|
|
WHERE messages.chat_room_id = ?
|
|
ORDER BY messages.created_at
|
|
LIMIT ?;
|