1// Code generated by sqlc. DO NOT EDIT.
  2// versions:
  3//   sqlc v1.29.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 listSessions = `-- name: ListSessions :many
110SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
111FROM sessions
112WHERE parent_session_id is NULL
113ORDER BY created_at DESC
114`
115
116func (q *Queries) ListSessions(ctx context.Context) ([]Session, error) {
117	rows, err := q.query(ctx, q.listSessionsStmt, listSessions)
118	if err != nil {
119		return nil, err
120	}
121	defer rows.Close()
122	items := []Session{}
123	for rows.Next() {
124		var i Session
125		if err := rows.Scan(
126			&i.ID,
127			&i.ParentSessionID,
128			&i.Title,
129			&i.MessageCount,
130			&i.PromptTokens,
131			&i.CompletionTokens,
132			&i.Cost,
133			&i.UpdatedAt,
134			&i.CreatedAt,
135			&i.SummaryMessageID,
136		); err != nil {
137			return nil, err
138		}
139		items = append(items, i)
140	}
141	if err := rows.Close(); err != nil {
142		return nil, err
143	}
144	if err := rows.Err(); err != nil {
145		return nil, err
146	}
147	return items, nil
148}
149
150const updateSession = `-- name: UpdateSession :one
151UPDATE sessions
152SET
153    title = ?,
154    prompt_tokens = ?,
155    completion_tokens = ?,
156    summary_message_id = ?,
157    cost = ?
158WHERE id = ?
159RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id
160`
161
162type UpdateSessionParams struct {
163	Title            string         `json:"title"`
164	PromptTokens     int64          `json:"prompt_tokens"`
165	CompletionTokens int64          `json:"completion_tokens"`
166	SummaryMessageID sql.NullString `json:"summary_message_id"`
167	Cost             float64        `json:"cost"`
168	ID               string         `json:"id"`
169}
170
171func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error) {
172	row := q.queryRow(ctx, q.updateSessionStmt, updateSession,
173		arg.Title,
174		arg.PromptTokens,
175		arg.CompletionTokens,
176		arg.SummaryMessageID,
177		arg.Cost,
178		arg.ID,
179	)
180	var i Session
181	err := row.Scan(
182		&i.ID,
183		&i.ParentSessionID,
184		&i.Title,
185		&i.MessageCount,
186		&i.PromptTokens,
187		&i.CompletionTokens,
188		&i.Cost,
189		&i.UpdatedAt,
190		&i.CreatedAt,
191		&i.SummaryMessageID,
192	)
193	return i, err
194}