1// Code generated by sqlc. DO NOT EDIT.
2// versions:
3// sqlc v1.30.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, todos
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 &i.Todos,
72 )
73 return i, err
74}
75
76const deleteSession = `-- name: DeleteSession :exec
77DELETE FROM sessions
78WHERE id = ?
79`
80
81func (q *Queries) DeleteSession(ctx context.Context, id string) error {
82 _, err := q.exec(ctx, q.deleteSessionStmt, deleteSession, id)
83 return err
84}
85
86const getLastSession = `-- name: GetLastSession :one
87SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos
88FROM sessions
89ORDER BY updated_at DESC
90LIMIT 1
91`
92
93func (q *Queries) GetLastSession(ctx context.Context) (Session, error) {
94 row := q.queryRow(ctx, q.getLastSessionStmt, getLastSession)
95 var i Session
96 err := row.Scan(
97 &i.ID,
98 &i.ParentSessionID,
99 &i.Title,
100 &i.MessageCount,
101 &i.PromptTokens,
102 &i.CompletionTokens,
103 &i.Cost,
104 &i.UpdatedAt,
105 &i.CreatedAt,
106 &i.SummaryMessageID,
107 &i.Todos,
108 )
109 return i, err
110}
111
112const getSessionByID = `-- name: GetSessionByID :one
113SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos
114FROM sessions
115WHERE id = ? LIMIT 1
116`
117
118func (q *Queries) GetSessionByID(ctx context.Context, id string) (Session, error) {
119 row := q.queryRow(ctx, q.getSessionByIDStmt, getSessionByID, id)
120 var i Session
121 err := row.Scan(
122 &i.ID,
123 &i.ParentSessionID,
124 &i.Title,
125 &i.MessageCount,
126 &i.PromptTokens,
127 &i.CompletionTokens,
128 &i.Cost,
129 &i.UpdatedAt,
130 &i.CreatedAt,
131 &i.SummaryMessageID,
132 &i.Todos,
133 )
134 return i, err
135}
136
137const listSessions = `-- name: ListSessions :many
138SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos
139FROM sessions
140WHERE parent_session_id is NULL
141ORDER BY updated_at DESC
142`
143
144func (q *Queries) ListSessions(ctx context.Context) ([]Session, error) {
145 rows, err := q.query(ctx, q.listSessionsStmt, listSessions)
146 if err != nil {
147 return nil, err
148 }
149 defer rows.Close()
150 items := []Session{}
151 for rows.Next() {
152 var i Session
153 if err := rows.Scan(
154 &i.ID,
155 &i.ParentSessionID,
156 &i.Title,
157 &i.MessageCount,
158 &i.PromptTokens,
159 &i.CompletionTokens,
160 &i.Cost,
161 &i.UpdatedAt,
162 &i.CreatedAt,
163 &i.SummaryMessageID,
164 &i.Todos,
165 ); err != nil {
166 return nil, err
167 }
168 items = append(items, i)
169 }
170 if err := rows.Close(); err != nil {
171 return nil, err
172 }
173 if err := rows.Err(); err != nil {
174 return nil, err
175 }
176 return items, nil
177}
178
179const renameSession = `-- name: RenameSession :exec
180UPDATE sessions
181SET
182 title = ?
183WHERE id = ?
184`
185
186type RenameSessionParams struct {
187 Title string `json:"title"`
188 ID string `json:"id"`
189}
190
191func (q *Queries) RenameSession(ctx context.Context, arg RenameSessionParams) error {
192 _, err := q.exec(ctx, q.renameSessionStmt, renameSession, arg.Title, arg.ID)
193 return err
194}
195
196const updateSession = `-- name: UpdateSession :one
197UPDATE sessions
198SET
199 title = ?,
200 prompt_tokens = ?,
201 completion_tokens = ?,
202 summary_message_id = ?,
203 cost = ?,
204 todos = ?
205WHERE id = ?
206RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos
207`
208
209type UpdateSessionParams struct {
210 Title string `json:"title"`
211 PromptTokens int64 `json:"prompt_tokens"`
212 CompletionTokens int64 `json:"completion_tokens"`
213 SummaryMessageID sql.NullString `json:"summary_message_id"`
214 Cost float64 `json:"cost"`
215 Todos sql.NullString `json:"todos"`
216 ID string `json:"id"`
217}
218
219func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error) {
220 row := q.queryRow(ctx, q.updateSessionStmt, updateSession,
221 arg.Title,
222 arg.PromptTokens,
223 arg.CompletionTokens,
224 arg.SummaryMessageID,
225 arg.Cost,
226 arg.Todos,
227 arg.ID,
228 )
229 var i Session
230 err := row.Scan(
231 &i.ID,
232 &i.ParentSessionID,
233 &i.Title,
234 &i.MessageCount,
235 &i.PromptTokens,
236 &i.CompletionTokens,
237 &i.Cost,
238 &i.UpdatedAt,
239 &i.CreatedAt,
240 &i.SummaryMessageID,
241 &i.Todos,
242 )
243 return i, err
244}
245
246const updateSessionTitleAndUsage = `-- name: UpdateSessionTitleAndUsage :exec
247UPDATE sessions
248SET
249 title = ?,
250 prompt_tokens = prompt_tokens + ?,
251 completion_tokens = completion_tokens + ?,
252 cost = cost + ?,
253 updated_at = strftime('%s', 'now')
254WHERE id = ?
255`
256
257type UpdateSessionTitleAndUsageParams struct {
258 Title string `json:"title"`
259 PromptTokens int64 `json:"prompt_tokens"`
260 CompletionTokens int64 `json:"completion_tokens"`
261 Cost float64 `json:"cost"`
262 ID string `json:"id"`
263}
264
265func (q *Queries) UpdateSessionTitleAndUsage(ctx context.Context, arg UpdateSessionTitleAndUsageParams) error {
266 _, err := q.exec(ctx, q.updateSessionTitleAndUsageStmt, updateSessionTitleAndUsage,
267 arg.Title,
268 arg.PromptTokens,
269 arg.CompletionTokens,
270 arg.Cost,
271 arg.ID,
272 )
273 return err
274}