htmgo/examples/chat/internal/db/queries.sql.go
2024-09-30 22:08:52 -05:00

212 lines
4.6 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// source: queries.sql
package db
import (
"context"
"database/sql"
)
const createChatRoom = `-- name: CreateChatRoom :one
INSERT INTO chat_rooms (id, name, created_at, updated_at)
VALUES (?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
RETURNING id, name, created_at, updated_at, last_message_sent_at
`
type CreateChatRoomParams struct {
ID string
Name string
}
type CreateChatRoomRow struct {
ID string
Name string
CreatedAt string
UpdatedAt string
LastMessageSentAt sql.NullString
}
func (q *Queries) CreateChatRoom(ctx context.Context, arg CreateChatRoomParams) (CreateChatRoomRow, error) {
row := q.db.QueryRowContext(ctx, createChatRoom, arg.ID, arg.Name)
var i CreateChatRoomRow
err := row.Scan(
&i.ID,
&i.Name,
&i.CreatedAt,
&i.UpdatedAt,
&i.LastMessageSentAt,
)
return i, err
}
const createUser = `-- name: CreateUser :one
INSERT INTO users (name, session_id, created_at, updated_at)
VALUES (?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
RETURNING id, name, session_id, created_at, updated_at
`
type CreateUserParams struct {
Name string
SessionID string
}
type CreateUserRow struct {
ID int64
Name string
SessionID string
CreatedAt string
UpdatedAt string
}
func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error) {
row := q.db.QueryRowContext(ctx, createUser, arg.Name, arg.SessionID)
var i CreateUserRow
err := row.Scan(
&i.ID,
&i.Name,
&i.SessionID,
&i.CreatedAt,
&i.UpdatedAt,
)
return i, err
}
const getChatRoom = `-- name: GetChatRoom :one
SELECT
id,
name,
last_message_sent_at,
created_at,
updated_at
FROM chat_rooms
WHERE chat_rooms.id = ?
`
func (q *Queries) GetChatRoom(ctx context.Context, id string) (ChatRoom, error) {
row := q.db.QueryRowContext(ctx, getChatRoom, id)
var i ChatRoom
err := row.Scan(
&i.ID,
&i.Name,
&i.LastMessageSentAt,
&i.CreatedAt,
&i.UpdatedAt,
)
return i, err
}
const getLastMessages = `-- 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 ?
`
type GetLastMessagesParams struct {
ChatRoomID string
Limit int64
}
type GetLastMessagesRow struct {
ID int64
ChatRoomID string
UserID int64
UserName string
Message string
CreatedAt string
UpdatedAt string
}
func (q *Queries) GetLastMessages(ctx context.Context, arg GetLastMessagesParams) ([]GetLastMessagesRow, error) {
rows, err := q.db.QueryContext(ctx, getLastMessages, arg.ChatRoomID, arg.Limit)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetLastMessagesRow
for rows.Next() {
var i GetLastMessagesRow
if err := rows.Scan(
&i.ID,
&i.ChatRoomID,
&i.UserID,
&i.UserName,
&i.Message,
&i.CreatedAt,
&i.UpdatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getUserBySessionId = `-- name: GetUserBySessionId :one
SELECT id, name, created_at, updated_at, session_id FROM users WHERE session_id = ?
`
func (q *Queries) GetUserBySessionId(ctx context.Context, sessionID string) (User, error) {
row := q.db.QueryRowContext(ctx, getUserBySessionId, sessionID)
var i User
err := row.Scan(
&i.ID,
&i.Name,
&i.CreatedAt,
&i.UpdatedAt,
&i.SessionID,
)
return i, err
}
const insertMessage = `-- name: InsertMessage :exec
INSERT INTO messages (chat_room_id, user_id, username, message, created_at, updated_at)
VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
RETURNING id, chat_room_id, user_id, username, message, created_at, updated_at
`
type InsertMessageParams struct {
ChatRoomID string
UserID int64
Username string
Message string
}
func (q *Queries) InsertMessage(ctx context.Context, arg InsertMessageParams) error {
_, err := q.db.ExecContext(ctx, insertMessage,
arg.ChatRoomID,
arg.UserID,
arg.Username,
arg.Message,
)
return err
}
const updateChatRoomLastMessageSentAt = `-- name: UpdateChatRoomLastMessageSentAt :exec
UPDATE chat_rooms
SET last_message_sent_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP
WHERE id = ?
`
func (q *Queries) UpdateChatRoomLastMessageSentAt(ctx context.Context, id string) error {
_, err := q.db.ExecContext(ctx, updateChatRoomLastMessageSentAt, id)
return err
}