1// Code generated by sqlc. DO NOT EDIT.
  2// versions:
  3//   sqlc v1.22.0
  4// source: sessions.sql
  5
  6package db
  7
  8import (
  9	"context"
 10	"database/sql"
 11)
 12
 13const createSession = `-- name: CreateSession :one
 14INSERT INTO sessions (
 15    id,
 16    parent_session_id,
 17    title,
 18    message_count,
 19    prompt_tokens,
 20    completion_tokens,
 21    cost,
 22    summary_message_id,
 23    updated_at,
 24    created_at
 25) VALUES (
 26    ?,
 27    ?,
 28    ?,
 29    ?,
 30    ?,
 31    ?,
 32    ?,
 33    null,
 34    strftime('%s', 'now'),
 35    strftime('%s', 'now')
 36) RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
 37`
 38
 39type CreateSessionParams struct {
 40	ID               string         `json:"id"`
 41	ParentSessionID  sql.NullString `json:"parent_session_id"`
 42	Title            string         `json:"title"`
 43	MessageCount     int64          `json:"message_count"`
 44	PromptTokens     int64          `json:"prompt_tokens"`
 45	CompletionTokens int64          `json:"completion_tokens"`
 46	Cost             float64        `json:"cost"`
 47}
 48
 49func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error) {
 50	row := q.queryRow(ctx, q.createSessionStmt, createSession,
 51		arg.ID,
 52		arg.ParentSessionID,
 53		arg.Title,
 54		arg.MessageCount,
 55		arg.PromptTokens,
 56		arg.CompletionTokens,
 57		arg.Cost,
 58	)
 59	var i Session
 60	err := row.Scan(
 61		&i.ID,
 62		&i.ParentSessionID,
 63		&i.Title,
 64		&i.MessageCount,
 65		&i.PromptTokens,
 66		&i.CompletionTokens,
 67		&i.Cost,
 68		&i.UpdatedAt,
 69		&i.CreatedAt,
 70		&i.SummaryMessageID,
 71	)
 72	return i, err
 73}
 74
 75const deleteSession = `-- name: DeleteSession :exec
 76DELETE FROM sessions
 77WHERE id = ?
 78`
 79
 80func (q *Queries) DeleteSession(ctx context.Context, id string) error {
 81	_, err := q.exec(ctx, q.deleteSessionStmt, deleteSession, id)
 82	return err
 83}
 84
 85const getSessionByID = `-- name: GetSessionByID :one
 86SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
 87FROM sessions
 88WHERE id = ? LIMIT 1
 89`
 90
 91func (q *Queries) GetSessionByID(ctx context.Context, id string) (Session, error) {
 92	row := q.queryRow(ctx, q.getSessionByIDStmt, getSessionByID, id)
 93	var i Session
 94	err := row.Scan(
 95		&i.ID,
 96		&i.ParentSessionID,
 97		&i.Title,
 98		&i.MessageCount,
 99		&i.PromptTokens,
100		&i.CompletionTokens,
101		&i.Cost,
102		&i.UpdatedAt,
103		&i.CreatedAt,
104		&i.SummaryMessageID,
105	)
106	return i, err
107}
108
109const listAllSessions = `-- name: ListAllSessions :many
110SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
111FROM sessions
112ORDER BY created_at DESC
113`
114
115func (q *Queries) ListAllSessions(ctx context.Context) ([]Session, error) {
116	rows, err := q.query(ctx, q.listAllSessionsStmt, listAllSessions)
117	if err != nil {
118		return nil, err
119	}
120	defer rows.Close()
121	items := []Session{}
122	for rows.Next() {
123		var i Session
124		if err := rows.Scan(
125			&i.ID,
126			&i.ParentSessionID,
127			&i.Title,
128			&i.MessageCount,
129			&i.PromptTokens,
130			&i.CompletionTokens,
131			&i.Cost,
132			&i.UpdatedAt,
133			&i.CreatedAt,
134			&i.SummaryMessageID,
135		); err != nil {
136			return nil, err
137		}
138		items = append(items, i)
139	}
140	if err := rows.Close(); err != nil {
141		return nil, err
142	}
143	if err := rows.Err(); err != nil {
144		return nil, err
145	}
146	return items, nil
147}
148
149const listChildSessions = `-- name: ListChildSessions :many
150SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
151FROM sessions
152WHERE parent_session_id = ?
153ORDER BY created_at ASC
154`
155
156func (q *Queries) ListChildSessions(ctx context.Context, parentSessionID sql.NullString) ([]Session, error) {
157	rows, err := q.query(ctx, q.listChildSessionsStmt, listChildSessions, parentSessionID)
158	if err != nil {
159		return nil, err
160	}
161	defer rows.Close()
162	items := []Session{}
163	for rows.Next() {
164		var i Session
165		if err := rows.Scan(
166			&i.ID,
167			&i.ParentSessionID,
168			&i.Title,
169			&i.MessageCount,
170			&i.PromptTokens,
171			&i.CompletionTokens,
172			&i.Cost,
173			&i.UpdatedAt,
174			&i.CreatedAt,
175			&i.SummaryMessageID,
176		); err != nil {
177			return nil, err
178		}
179		items = append(items, i)
180	}
181	if err := rows.Close(); err != nil {
182		return nil, err
183	}
184	if err := rows.Err(); err != nil {
185		return nil, err
186	}
187	return items, nil
188}
189
190const listSessions = `-- name: ListSessions :many
191SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
192FROM sessions
193WHERE parent_session_id is NULL
194ORDER BY created_at DESC
195`
196
197func (q *Queries) ListSessions(ctx context.Context) ([]Session, error) {
198	rows, err := q.query(ctx, q.listSessionsStmt, listSessions)
199	if err != nil {
200		return nil, err
201	}
202	defer rows.Close()
203	items := []Session{}
204	for rows.Next() {
205		var i Session
206		if err := rows.Scan(
207			&i.ID,
208			&i.ParentSessionID,
209			&i.Title,
210			&i.MessageCount,
211			&i.PromptTokens,
212			&i.CompletionTokens,
213			&i.Cost,
214			&i.UpdatedAt,
215			&i.CreatedAt,
216			&i.SummaryMessageID,
217		); err != nil {
218			return nil, err
219		}
220		items = append(items, i)
221	}
222	if err := rows.Close(); err != nil {
223		return nil, err
224	}
225	if err := rows.Err(); err != nil {
226		return nil, err
227	}
228	return items, nil
229}
230
231const updateSession = `-- name: UpdateSession :one
232UPDATE sessions
233SET
234    title = ?,
235    prompt_tokens = ?,
236    completion_tokens = ?,
237    summary_message_id = ?,
238    cost = ?
239WHERE id = ?
240RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
241`
242
243type UpdateSessionParams struct {
244	Title            string         `json:"title"`
245	PromptTokens     int64          `json:"prompt_tokens"`
246	CompletionTokens int64          `json:"completion_tokens"`
247	SummaryMessageID sql.NullString `json:"summary_message_id"`
248	Cost             float64        `json:"cost"`
249	ID               string         `json:"id"`
250}
251
252func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error) {
253	row := q.queryRow(ctx, q.updateSessionStmt, updateSession,
254		arg.Title,
255		arg.PromptTokens,
256		arg.CompletionTokens,
257		arg.SummaryMessageID,
258		arg.Cost,
259		arg.ID,
260	)
261	var i Session
262	err := row.Scan(
263		&i.ID,
264		&i.ParentSessionID,
265		&i.Title,
266		&i.MessageCount,
267		&i.PromptTokens,
268		&i.CompletionTokens,
269		&i.Cost,
270		&i.UpdatedAt,
271		&i.CreatedAt,
272		&i.SummaryMessageID,
273	)
274	return i, err
275}