1// Code generated by sqlc. DO NOT EDIT.
  2// versions:
  3//   sqlc v1.22.0
  4// source: messages.sql
  5
  6package db
  7
  8import (
  9	"context"
 10	"database/sql"
 11)
 12
 13const createMessage = `-- name: CreateMessage :one
 14INSERT INTO messages (
 15    id,
 16    session_id,
 17    role,
 18    parts,
 19    model,
 20    provider,
 21    created_at,
 22    updated_at
 23) VALUES (
 24    ?, ?, ?, ?, ?, ?, strftime('%s', 'now'), strftime('%s', 'now')
 25)
 26RETURNING id, session_id, role, parts, model, created_at, updated_at, finished_at, provider
 27`
 28
 29type CreateMessageParams struct {
 30	ID        string         `json:"id"`
 31	SessionID string         `json:"session_id"`
 32	Role      string         `json:"role"`
 33	Parts     string         `json:"parts"`
 34	Model     sql.NullString `json:"model"`
 35	Provider  sql.NullString `json:"provider"`
 36}
 37
 38func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error) {
 39	row := q.queryRow(ctx, q.createMessageStmt, createMessage,
 40		arg.ID,
 41		arg.SessionID,
 42		arg.Role,
 43		arg.Parts,
 44		arg.Model,
 45		arg.Provider,
 46	)
 47	var i Message
 48	err := row.Scan(
 49		&i.ID,
 50		&i.SessionID,
 51		&i.Role,
 52		&i.Parts,
 53		&i.Model,
 54		&i.CreatedAt,
 55		&i.UpdatedAt,
 56		&i.FinishedAt,
 57		&i.Provider,
 58	)
 59	return i, err
 60}
 61
 62const deleteMessage = `-- name: DeleteMessage :exec
 63DELETE FROM messages
 64WHERE id = ?
 65`
 66
 67func (q *Queries) DeleteMessage(ctx context.Context, id string) error {
 68	_, err := q.exec(ctx, q.deleteMessageStmt, deleteMessage, id)
 69	return err
 70}
 71
 72const deleteSessionMessages = `-- name: DeleteSessionMessages :exec
 73DELETE FROM messages
 74WHERE session_id = ?
 75`
 76
 77func (q *Queries) DeleteSessionMessages(ctx context.Context, sessionID string) error {
 78	_, err := q.exec(ctx, q.deleteSessionMessagesStmt, deleteSessionMessages, sessionID)
 79	return err
 80}
 81
 82const getMessage = `-- name: GetMessage :one
 83SELECT id, session_id, role, parts, model, created_at, updated_at, finished_at, provider
 84FROM messages
 85WHERE id = ? LIMIT 1
 86`
 87
 88func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error) {
 89	row := q.queryRow(ctx, q.getMessageStmt, getMessage, id)
 90	var i Message
 91	err := row.Scan(
 92		&i.ID,
 93		&i.SessionID,
 94		&i.Role,
 95		&i.Parts,
 96		&i.Model,
 97		&i.CreatedAt,
 98		&i.UpdatedAt,
 99		&i.FinishedAt,
100		&i.Provider,
101	)
102	return i, err
103}
104
105const listMessagesBySession = `-- name: ListMessagesBySession :many
106SELECT id, session_id, role, parts, model, created_at, updated_at, finished_at, provider
107FROM messages
108WHERE session_id = ?
109ORDER BY created_at ASC
110`
111
112func (q *Queries) ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error) {
113	rows, err := q.query(ctx, q.listMessagesBySessionStmt, listMessagesBySession, sessionID)
114	if err != nil {
115		return nil, err
116	}
117	defer rows.Close()
118	items := []Message{}
119	for rows.Next() {
120		var i Message
121		if err := rows.Scan(
122			&i.ID,
123			&i.SessionID,
124			&i.Role,
125			&i.Parts,
126			&i.Model,
127			&i.CreatedAt,
128			&i.UpdatedAt,
129			&i.FinishedAt,
130			&i.Provider,
131		); err != nil {
132			return nil, err
133		}
134		items = append(items, i)
135	}
136	if err := rows.Close(); err != nil {
137		return nil, err
138	}
139	if err := rows.Err(); err != nil {
140		return nil, err
141	}
142	return items, nil
143}
144
145const updateMessage = `-- name: UpdateMessage :exec
146UPDATE messages
147SET
148    parts = ?,
149    finished_at = ?,
150    updated_at = strftime('%s', 'now')
151WHERE id = ?
152`
153
154type UpdateMessageParams struct {
155	Parts      string        `json:"parts"`
156	FinishedAt sql.NullInt64 `json:"finished_at"`
157	ID         string        `json:"id"`
158}
159
160func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error {
161	_, err := q.exec(ctx, q.updateMessageStmt, updateMessage, arg.Parts, arg.FinishedAt, arg.ID)
162	return err
163}